From f070ae182aebbe028fea13faaade17dfbcd729ca Mon Sep 17 00:00:00 2001 From: FanXinhao <1023405741@qq.com> Date: Fri, 15 May 2020 13:53:18 +0800 Subject: [PATCH] add NB476 support. --- targets/STM32L476RG_NB476/.config | 44 + targets/STM32L476RG_NB476/Demos/Kconfig | 13 + .../Demos/use_coap_demo/defaults.sdkconfig | 44 + .../use_coap_demo/defaults.sdkconfig.back | 47 + .../Demos/use_coap_demo/use_coap_demo.c | 149 + targets/STM32L476RG_NB476/Demos/user_demo.mk | 19 + targets/STM32L476RG_NB476/GCC/LOG | 135 + targets/STM32L476RG_NB476/GCC/Makefile | 170 + targets/STM32L476RG_NB476/GCC/Makefile_Sota | 187 + targets/STM32L476RG_NB476/GCC/os.ld | 217 + targets/STM32L476RG_NB476/GCC/os_app.ld | 203 + targets/STM32L476RG_NB476/GCC/os_loader.ld | 198 + targets/STM32L476RG_NB476/GCC/project.mk | 76 + .../STM32L476RG_NB476/Hardware/DHT11/dht11.c | 183 + .../STM32L476RG_NB476/Hardware/DHT11/dht11.h | 29 + .../STM32L476RG_NB476/Hardware/Inc/hal_iwdg.h | 87 + .../Hardware/Inc/hal_qspi_flash.h | 190 + .../STM32L476RG_NB476/Hardware/Inc/hal_rng.h | 102 + targets/STM32L476RG_NB476/Hardware/OLED/bmp.h | 80 + .../STM32L476RG_NB476/Hardware/OLED/oled.c | 240 + .../STM32L476RG_NB476/Hardware/OLED/oled.h | 39 + .../Hardware/OLED/oledfont.h | 253 + .../STM32L476RG_NB476/Hardware/Src/hal_iwdg.c | 61 + .../Hardware/Src/hal_qspi_flash.c | 426 + .../STM32L476RG_NB476/Hardware/Src/hal_rng.c | 89 + targets/STM32L476RG_NB476/Inc/at_hal.h | 49 + targets/STM32L476RG_NB476/Inc/board.h | 81 + targets/STM32L476RG_NB476/Inc/common.h | 54 + targets/STM32L476RG_NB476/Inc/dwt.h | 54 + targets/STM32L476RG_NB476/Inc/gpio.h | 57 + targets/STM32L476RG_NB476/Inc/i2c.h | 58 + targets/STM32L476RG_NB476/Inc/main.h | 101 + targets/STM32L476RG_NB476/Inc/rtc.h | 58 + targets/STM32L476RG_NB476/Inc/stm32l476xx.h | 18481 ++++++++++++++++ targets/STM32L476RG_NB476/Inc/stm32l4xx.h | 248 + .../Inc/stm32l4xx_hal_conf.h | 440 + targets/STM32L476RG_NB476/Inc/stm32l4xx_it.h | 68 + targets/STM32L476RG_NB476/Inc/sys.h | 56 + targets/STM32L476RG_NB476/Inc/sys_init.h | 83 + .../STM32L476RG_NB476/Inc/system_stm32l4xx.h | 107 + targets/STM32L476RG_NB476/Inc/usart.h | 62 + targets/STM32L476RG_NB476/Kconfig | 58 + targets/STM32L476RG_NB476/Lib/hwpatch.lib | Bin 0 -> 118352 bytes targets/STM32L476RG_NB476/Lib/hwpatch_iar.a | Bin 0 -> 84644 bytes targets/STM32L476RG_NB476/Lib/libhwpatch.a | Bin 0 -> 100860 bytes .../OS_CONFIG/iot_link_config.h | 45 + .../OS_CONFIG/los_builddef.h | 239 + .../STM32L476RG_NB476/OS_CONFIG/los_printf.h | 115 + .../OS_CONFIG/target_config.h | 399 + targets/STM32L476RG_NB476/Src/LWM2M_Task.c | 93 + targets/STM32L476RG_NB476/Src/dwt.c | 72 + targets/STM32L476RG_NB476/Src/flash_adaptor.c | 122 + targets/STM32L476RG_NB476/Src/gpio.c | 91 + targets/STM32L476RG_NB476/Src/i2c.c | 118 + targets/STM32L476RG_NB476/Src/main.c | 143 + targets/STM32L476RG_NB476/Src/main.c.back.c | 429 + targets/STM32L476RG_NB476/Src/ota_port.c | 107 + targets/STM32L476RG_NB476/Src/rtc.c | 86 + .../STM32L476RG_NB476/Src/stm32l4xx_hal_msp.c | 84 + targets/STM32L476RG_NB476/Src/stm32l4xx_it.c | 190 + targets/STM32L476RG_NB476/Src/sys.c | 37 + targets/STM32L476RG_NB476/Src/sys_init.c | 160 + .../STM32L476RG_NB476/Src/system_stm32l4xx.c | 337 + targets/STM32L476RG_NB476/Src/uart_debug.c | 150 + targets/STM32L476RG_NB476/Src/usart.c | 237 + targets/STM32L476RG_NB476/iot_config.h | 26 + targets/STM32L476RG_NB476/uart_at/uart_at.c | 270 + 67 files changed, 26946 insertions(+) create mode 100644 targets/STM32L476RG_NB476/.config create mode 100644 targets/STM32L476RG_NB476/Demos/Kconfig create mode 100644 targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig create mode 100644 targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig.back create mode 100644 targets/STM32L476RG_NB476/Demos/use_coap_demo/use_coap_demo.c create mode 100644 targets/STM32L476RG_NB476/Demos/user_demo.mk create mode 100644 targets/STM32L476RG_NB476/GCC/LOG create mode 100644 targets/STM32L476RG_NB476/GCC/Makefile create mode 100644 targets/STM32L476RG_NB476/GCC/Makefile_Sota create mode 100644 targets/STM32L476RG_NB476/GCC/os.ld create mode 100644 targets/STM32L476RG_NB476/GCC/os_app.ld create mode 100644 targets/STM32L476RG_NB476/GCC/os_loader.ld create mode 100644 targets/STM32L476RG_NB476/GCC/project.mk create mode 100644 targets/STM32L476RG_NB476/Hardware/DHT11/dht11.c create mode 100644 targets/STM32L476RG_NB476/Hardware/DHT11/dht11.h create mode 100644 targets/STM32L476RG_NB476/Hardware/Inc/hal_iwdg.h create mode 100644 targets/STM32L476RG_NB476/Hardware/Inc/hal_qspi_flash.h create mode 100644 targets/STM32L476RG_NB476/Hardware/Inc/hal_rng.h create mode 100644 targets/STM32L476RG_NB476/Hardware/OLED/bmp.h create mode 100644 targets/STM32L476RG_NB476/Hardware/OLED/oled.c create mode 100644 targets/STM32L476RG_NB476/Hardware/OLED/oled.h create mode 100644 targets/STM32L476RG_NB476/Hardware/OLED/oledfont.h create mode 100644 targets/STM32L476RG_NB476/Hardware/Src/hal_iwdg.c create mode 100644 targets/STM32L476RG_NB476/Hardware/Src/hal_qspi_flash.c create mode 100644 targets/STM32L476RG_NB476/Hardware/Src/hal_rng.c create mode 100644 targets/STM32L476RG_NB476/Inc/at_hal.h create mode 100644 targets/STM32L476RG_NB476/Inc/board.h create mode 100644 targets/STM32L476RG_NB476/Inc/common.h create mode 100644 targets/STM32L476RG_NB476/Inc/dwt.h create mode 100644 targets/STM32L476RG_NB476/Inc/gpio.h create mode 100644 targets/STM32L476RG_NB476/Inc/i2c.h create mode 100644 targets/STM32L476RG_NB476/Inc/main.h create mode 100644 targets/STM32L476RG_NB476/Inc/rtc.h create mode 100644 targets/STM32L476RG_NB476/Inc/stm32l476xx.h create mode 100644 targets/STM32L476RG_NB476/Inc/stm32l4xx.h create mode 100644 targets/STM32L476RG_NB476/Inc/stm32l4xx_hal_conf.h create mode 100644 targets/STM32L476RG_NB476/Inc/stm32l4xx_it.h create mode 100644 targets/STM32L476RG_NB476/Inc/sys.h create mode 100644 targets/STM32L476RG_NB476/Inc/sys_init.h create mode 100644 targets/STM32L476RG_NB476/Inc/system_stm32l4xx.h create mode 100644 targets/STM32L476RG_NB476/Inc/usart.h create mode 100644 targets/STM32L476RG_NB476/Kconfig create mode 100644 targets/STM32L476RG_NB476/Lib/hwpatch.lib create mode 100644 targets/STM32L476RG_NB476/Lib/hwpatch_iar.a create mode 100644 targets/STM32L476RG_NB476/Lib/libhwpatch.a create mode 100644 targets/STM32L476RG_NB476/OS_CONFIG/iot_link_config.h create mode 100644 targets/STM32L476RG_NB476/OS_CONFIG/los_builddef.h create mode 100644 targets/STM32L476RG_NB476/OS_CONFIG/los_printf.h create mode 100644 targets/STM32L476RG_NB476/OS_CONFIG/target_config.h create mode 100644 targets/STM32L476RG_NB476/Src/LWM2M_Task.c create mode 100644 targets/STM32L476RG_NB476/Src/dwt.c create mode 100644 targets/STM32L476RG_NB476/Src/flash_adaptor.c create mode 100644 targets/STM32L476RG_NB476/Src/gpio.c create mode 100644 targets/STM32L476RG_NB476/Src/i2c.c create mode 100644 targets/STM32L476RG_NB476/Src/main.c create mode 100644 targets/STM32L476RG_NB476/Src/main.c.back.c create mode 100644 targets/STM32L476RG_NB476/Src/ota_port.c create mode 100644 targets/STM32L476RG_NB476/Src/rtc.c create mode 100644 targets/STM32L476RG_NB476/Src/stm32l4xx_hal_msp.c create mode 100644 targets/STM32L476RG_NB476/Src/stm32l4xx_it.c create mode 100644 targets/STM32L476RG_NB476/Src/sys.c create mode 100644 targets/STM32L476RG_NB476/Src/sys_init.c create mode 100644 targets/STM32L476RG_NB476/Src/system_stm32l4xx.c create mode 100644 targets/STM32L476RG_NB476/Src/uart_debug.c create mode 100644 targets/STM32L476RG_NB476/Src/usart.c create mode 100644 targets/STM32L476RG_NB476/iot_config.h create mode 100644 targets/STM32L476RG_NB476/uart_at/uart_at.c diff --git a/targets/STM32L476RG_NB476/.config b/targets/STM32L476RG_NB476/.config new file mode 100644 index 000000000..27e928fde --- /dev/null +++ b/targets/STM32L476RG_NB476/.config @@ -0,0 +1,44 @@ +#Generated by IoT Link Studio +CONFIG_ARCH_CPU_TYPE="armv7-m" +CONFIG_UARTAT_RCVMAX=2048 +CONFIG_UARTAT_BAUDRATE=9600 +CONFIG_UARTAT_DEVNAME="atdev" +CONFIG_LITEOS_ENABLE=y +# CONFIG_NOVAOS_ENABLE is not set +# CONFIG_LINUXOS_ENABLE is not set +# CONFIG_MACOS_ENABLE is not set +# CONFIG_NEW_OS is not set +CONFIG_AT_ENABLE=y +CONFIG_AT_DEVNAME="atdev" +CONFIG_AT_OOBTABLEN=6 +CONFIG_AT_RECVMAXLEN=1024 +CONFIG_AT_TASKPRIOR=10 +# CONFIG_CJSON_ENABLE is not set +CONFIG_DRIVER_ENABLE=y +CONFIG_LINKLOG_ENABLE=y +CONFIG_LINKQUEUE_ENABLE=y +CONFIG_LINKDEMO_ENABLE=y +CONFIG_STIMER_ENABLE=y +CONFIG_STIMER_STACKSIZE=2048 +CONFIG_STIMER_TASKPRIOR=10 +# CONFIG_STIMER_DEMO_ENABLE is not set +# CONFIG_TCIP_AL_ENABLE is not set +# CONFIG_DTLS_AL_ENABLE is not set +# CONFIG_COAP_AL_ENABLE is not set +# CONFIG_LWM2M_AL_ENABLE is not set +# CONFIG_MQTT_AL_ENABLE is not set +CONFIG_OCSERVICES_ENABLE=y +CONFIG_OCCOAP_ENABLE=y +# CONFIG_OCCOAPTINY_ENABLE is not set +CONFIG_BOUDICA120_ENABLE=y +# CONFIG_OCCOAPNULL is not set +# CONFIG_OCCOAP_DEMO_ENABLE is not set +# CONFIG_OCLWM2M_ENABLE is not set +# CONFIG_OCMQTT_ENABLE is not set +CONFIG_SHELL_ENABLE=y +CONFIG_SHELL_TASK_STACKSIZE=2048 +CONFIG_SHELL_TASK_PRIOR=10 +CONFIG_IOT_LINK_CONFIGFILE="iot_config.h" +# CONFIG_Demo_None is not set +CONFIG_Demo_Use_Coap=y +CONFIG_USER_DEMO="use_coap_demo" diff --git a/targets/STM32L476RG_NB476/Demos/Kconfig b/targets/STM32L476RG_NB476/Demos/Kconfig new file mode 100644 index 000000000..31f46293a --- /dev/null +++ b/targets/STM32L476RG_NB476/Demos/Kconfig @@ -0,0 +1,13 @@ +choice Demo + optional + prompt "User Defined Demo" + config Demo_None + bool "none" + config Demo_Use_Coap + bool "Report temperature" +endchoice + +config USER_DEMO + string + default "use_coap_demo" if Demo_Use_Coap + default "none" \ No newline at end of file diff --git a/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig b/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig new file mode 100644 index 000000000..27e928fde --- /dev/null +++ b/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig @@ -0,0 +1,44 @@ +#Generated by IoT Link Studio +CONFIG_ARCH_CPU_TYPE="armv7-m" +CONFIG_UARTAT_RCVMAX=2048 +CONFIG_UARTAT_BAUDRATE=9600 +CONFIG_UARTAT_DEVNAME="atdev" +CONFIG_LITEOS_ENABLE=y +# CONFIG_NOVAOS_ENABLE is not set +# CONFIG_LINUXOS_ENABLE is not set +# CONFIG_MACOS_ENABLE is not set +# CONFIG_NEW_OS is not set +CONFIG_AT_ENABLE=y +CONFIG_AT_DEVNAME="atdev" +CONFIG_AT_OOBTABLEN=6 +CONFIG_AT_RECVMAXLEN=1024 +CONFIG_AT_TASKPRIOR=10 +# CONFIG_CJSON_ENABLE is not set +CONFIG_DRIVER_ENABLE=y +CONFIG_LINKLOG_ENABLE=y +CONFIG_LINKQUEUE_ENABLE=y +CONFIG_LINKDEMO_ENABLE=y +CONFIG_STIMER_ENABLE=y +CONFIG_STIMER_STACKSIZE=2048 +CONFIG_STIMER_TASKPRIOR=10 +# CONFIG_STIMER_DEMO_ENABLE is not set +# CONFIG_TCIP_AL_ENABLE is not set +# CONFIG_DTLS_AL_ENABLE is not set +# CONFIG_COAP_AL_ENABLE is not set +# CONFIG_LWM2M_AL_ENABLE is not set +# CONFIG_MQTT_AL_ENABLE is not set +CONFIG_OCSERVICES_ENABLE=y +CONFIG_OCCOAP_ENABLE=y +# CONFIG_OCCOAPTINY_ENABLE is not set +CONFIG_BOUDICA120_ENABLE=y +# CONFIG_OCCOAPNULL is not set +# CONFIG_OCCOAP_DEMO_ENABLE is not set +# CONFIG_OCLWM2M_ENABLE is not set +# CONFIG_OCMQTT_ENABLE is not set +CONFIG_SHELL_ENABLE=y +CONFIG_SHELL_TASK_STACKSIZE=2048 +CONFIG_SHELL_TASK_PRIOR=10 +CONFIG_IOT_LINK_CONFIGFILE="iot_config.h" +# CONFIG_Demo_None is not set +CONFIG_Demo_Use_Coap=y +CONFIG_USER_DEMO="use_coap_demo" diff --git a/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig.back b/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig.back new file mode 100644 index 000000000..32d0ef76d --- /dev/null +++ b/targets/STM32L476RG_NB476/Demos/use_coap_demo/defaults.sdkconfig.back @@ -0,0 +1,47 @@ +#Generated by Huawei IoT Studio +CONFIG_ARCH_CPU_TYPE="armv7-m" +CONFIG_UARTAT_RCVMAX=2048 +CONFIG_UARTAT_BAUDRATE=9600 +CONFIG_UARTAT_DEVNAME="atdev" +CONFIG_LITEOS_ENABLE=y +# CONFIG_NOVAOS_ENABLE is not set +# CONFIG_LINUXOS_ENABLE is not set +# CONFIG_MACOS_ENABLE is not set +# CONFIG_NEW_OS is not set +CONFIG_AT_ENABLE=y +CONFIG_AT_DEVNAME="atdev" +CONFIG_AT_OOBTABLEN=6 +CONFIG_AT_RECVMAXLEN=1024 +CONFIG_AT_TASKPRIOR=10 +# CONFIG_CJSON_ENABLE is not set +CONFIG_DRIVER_ENABLE=y +CONFIG_LINKLOG_ENABLE=y +CONFIG_LINKQUEUE_ENABLE=y +CONFIG_LINKDEMO_ENABLE=y +# CONFIG_STIMER_ENABLE=y +# CONFIG_STIMER_STACKSIZE=2048 +# CONFIG_STIMER_TASKPRIOR=10 +# CONFIG_STIMER_DEMO_ENABLE is not set +# CONFIG_TCIP_AL_ENABLE is not set +# CONFIG_DTLS_AL_ENABLE is not set +# CONFIG_COAP_AL_ENABLE is not set +# CONFIG_LWM2M_AL_ENABLE is not set +# CONFIG_MQTT_AL_ENABLE is not set +CONFIG_OCSERVICES_ENABLE=y +CONFIG_OCCOAP_ENABLE=y +#CONFIG_OCLWM2M_ENABLE is not set +# CONFIG_OCLWM2MTINY_ENABLE is not set +CONFIG_BOUDICA120_ENABLE=y +# CONFIG_OCLWM2MNULL is not set +# CONFIG_OCLWM2M_DEMO_ENABLE is not set +# CONFIG_OCMQTT_ENABLE is not set +# CONFIG_OC_MQTTV1_PROFILE is not set +# CONFIG_OC_MQTTV1_DEMO is not set +# CONFIG_OC_MQTTV1_DEMO_BS is not set +CONFIG_SHELL_ENABLE=y +CONFIG_SHELL_TASK_STACKSIZE=2048 +CONFIG_SHELL_TASK_PRIOR=10 +CONFIG_IOT_LINK_CONFIGFILE="iot_config.h" +# CONFIG_Demo_None is not set +CONFIG_Demo_Use_Coap=y +CONFIG_USER_DEMO="use_coap_demo" \ No newline at end of file diff --git a/targets/STM32L476RG_NB476/Demos/use_coap_demo/use_coap_demo.c b/targets/STM32L476RG_NB476/Demos/use_coap_demo/use_coap_demo.c new file mode 100644 index 000000000..d8c0514e3 --- /dev/null +++ b/targets/STM32L476RG_NB476/Demos/use_coap_demo/use_coap_demo.c @@ -0,0 +1,149 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ +/** + * DATE AUTHOR INSTRUCTION + * 2020-04-21 FanXinhao The first version + * + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dht11.h" +#include "oled.h" + +//DHT11 Data Struct +DHT11_Data_TypeDef dht11_data; +unsigned char DHT11_str[10] = {0}; + + +/* LWM2M server information */ +#define cn_endpoint_id "coap_001" +#define cn_app_server "119.3.250.80" +#define cn_app_port "5683" + +//if your command is very fast,please use a queue here--TODO +#define cn_app_rcv_buf_len 128 +static int8_t s_rcv_buffer[cn_app_rcv_buf_len]; +static int s_rcv_datalen; +static osal_semp_t s_rcv_sync; + +//use this function to push all the message to the buffer +static int app_msg_deal(void *msg, int len) +{ + int ret = -1; + + if(len <= cn_app_rcv_buf_len) + { + memcpy(s_rcv_buffer,msg,len); + s_rcv_datalen = len; + + osal_semp_post(s_rcv_sync); + + ret = 0; + + } + return ret; +} + +int coap_report_task(void *args) +{ + int* handle = NULL; + oc_config_param_t oc_param; + char Temp[10] = {00, 22}; + oc_coap_imp_init(); + + memset(&oc_param,0,sizeof(oc_param)); + + oc_param.app_server.address = cn_app_server; + oc_param.app_server.port = cn_app_port; + oc_param.app_server.ep_id = cn_endpoint_id; + oc_param.boot_mode = en_oc_boot_strap_mode_factory; + oc_param.rcv_func = app_msg_deal; + + handle = oc_coap_config(&oc_param); + if (NULL == handle) + { + printf("config_init fail!\r\n"); + } + else + { + printf("start send message to CDP server!\r\n"); + } + while(1) + { + memset(DHT11_str, 0, 6); + sprintf(Temp,"%02d",(int)dht11_data.temperature); + oc_coap_report(handle, Temp, 2); + osal_task_sleep(10*1000); + } +} + +int Read_DHT11_task(void *args) +{ + + while(1) + { + DHT11_Read_TempAndHumidity(&dht11_data);//read DHT11 + /* oled display */ + OLED_Clear(); + OLED_ShowString(9, 0, "DHT11 Data", 10); + memset(DHT11_str, 0, 6); + sprintf(DHT11_str,"temp %5.2f",dht11_data.temperature); + OLED_ShowString(9, 2, DHT11_str, 5); + memset(DHT11_str, 0, 6); + sprintf(DHT11_str,"humid %5.2f",dht11_data.humidity); + OLED_ShowString(9, 4, DHT11_str, 5); + + osal_task_sleep(5*1000); + + } +} + +int standard_app_demo_main() +{ + osal_task_create("coap_report",coap_report_task, NULL, 0x1000, NULL, 3); + osal_task_create("Read_DHT11",Read_DHT11_task, NULL, 0x500, NULL, 3); + return 0; +} + + + + + diff --git a/targets/STM32L476RG_NB476/Demos/user_demo.mk b/targets/STM32L476RG_NB476/Demos/user_demo.mk new file mode 100644 index 000000000..d7711136f --- /dev/null +++ b/targets/STM32L476RG_NB476/Demos/user_demo.mk @@ -0,0 +1,19 @@ +################################################################################ +# this is used for compile the user defined oc demo +################################################################################ + +#if you have defined multiple demos by yourself, modify this file to compile the chosen demo. + +#example for LiteOS func + + +#example for report temperature +ifeq ($(CONFIG_USER_DEMO), "use_coap_demo") + user_demo_src = ${wildcard $(TARGET_DIR)/Demos/use_coap_demo/*.c} + user_demo_defs = -D CONFIG_USE_COAP_ENABLE=1 +endif + + +C_SOURCES += $(user_demo_src) +C_INCLUDES += $(user_demo_inc) +C_DEFS += $(user_demo_defs) diff --git a/targets/STM32L476RG_NB476/GCC/LOG b/targets/STM32L476RG_NB476/GCC/LOG new file mode 100644 index 000000000..8a0e2ba28 --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/LOG @@ -0,0 +1,135 @@ +mkdir -p build/Demos/use_coap_demo/ +mkdir -p build/Hardware/DHT11/ +mkdir -p build/Hardware/OLED/ +mkdir -p build/Hardware/Src/ +mkdir -p build/Src/ +mkdir -p build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/ +mkdir -p build/iot_link/ +mkdir -p build/iot_link/at/ +mkdir -p build/iot_link/crc/ +mkdir -p build/iot_link/demos/ +mkdir -p build/iot_link/driver/ +mkdir -p build/iot_link/link_log/ +mkdir -p build/iot_link/link_misc/ +mkdir -p build/iot_link/oc/oc_coap/boudica120_oc/ +mkdir -p build/iot_link/oc/oc_coap/oc_coap_al/ +mkdir -p build/iot_link/os/liteos/ +mkdir -p build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/ +mkdir -p build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/ +mkdir -p build/iot_link/os/liteos/arch/arm/arm-m/src/ +mkdir -p build/iot_link/os/liteos/base/core/ +mkdir -p build/iot_link/os/liteos/base/ipc/ +mkdir -p build/iot_link/os/liteos/base/mem/common/ +mkdir -p build/iot_link/os/liteos/base/mem/heap/ +mkdir -p build/iot_link/os/liteos/base/mem/membox/ +mkdir -p build/iot_link/os/liteos/base/misc/ +mkdir -p build/iot_link/os/liteos/base/om/ +mkdir -p build/iot_link/os/liteos/cmsis/ +mkdir -p build/iot_link/os/liteos/extended/tickless/ +mkdir -p build/iot_link/os/liteos/utils/ +mkdir -p build/iot_link/os/osal/ +mkdir -p build/iot_link/queue/ +mkdir -p build/iot_link/shell/ +mkdir -p build/iot_link/stimer/ +mkdir -p build/iot_link/storage/ +mkdir -p build/uart_at/ +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/link_misc/link_ring_buffer.d" -MT"build/iot_link/link_misc/link_ring_buffer.d" -MT"build/iot_link/link_misc/link_ring_buffer.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/link_misc/link_ring_buffer.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc/link_ring_buffer.c -o build/iot_link/link_misc/link_ring_buffer.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/link_misc/link_random.d" -MT"build/iot_link/link_misc/link_random.d" -MT"build/iot_link/link_misc/link_random.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/link_misc/link_random.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc/link_random.c -o build/iot_link/link_misc/link_random.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/link_misc/link_string.d" -MT"build/iot_link/link_misc/link_string.d" -MT"build/iot_link/link_misc/link_string.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/link_misc/link_string.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc/link_string.c -o build/iot_link/link_misc/link_string.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/link_log/link_log.d" -MT"build/iot_link/link_log/link_log.d" -MT"build/iot_link/link_log/link_log.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/link_log/link_log.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log/link_log.c -o build/iot_link/link_log/link_log.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/osal/osal.d" -MT"build/iot_link/os/osal/osal.d" -MT"build/iot_link/os/osal/osal.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/osal/osal.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal/osal.c -o build/iot_link/os/osal/osal.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.c -o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.c -o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.c -o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.c -o build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.c -o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.c -o build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.c -o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/cmsis/cmsis_liteos.d" -MT"build/iot_link/os/liteos/cmsis/cmsis_liteos.d" -MT"build/iot_link/os/liteos/cmsis/cmsis_liteos.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/cmsis/cmsis_liteos.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis/cmsis_liteos.c -o build/iot_link/os/liteos/cmsis/cmsis_liteos.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/utils/rbtree.d" -MT"build/iot_link/os/liteos/utils/rbtree.d" -MT"build/iot_link/os/liteos/utils/rbtree.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/utils/rbtree.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/utils/rbtree.c -o build/iot_link/os/liteos/utils/rbtree.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/los_init.d" -MT"build/iot_link/os/liteos/los_init.d" -MT"build/iot_link/os/liteos/los_init.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/los_init.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/los_init.c -o build/iot_link/os/liteos/los_init.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/liteos_imp.d" -MT"build/iot_link/os/liteos/liteos_imp.d" -MT"build/iot_link/os/liteos/liteos_imp.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/liteos_imp.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/liteos_imp.c -o build/iot_link/os/liteos/liteos_imp.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/newlib_stub.d" -MT"build/iot_link/os/liteos/newlib_stub.d" -MT"build/iot_link/os/liteos/newlib_stub.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/newlib_stub.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/newlib_stub.c -o build/iot_link/os/liteos/newlib_stub.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/malloc.d" -MT"build/iot_link/os/liteos/malloc.d" -MT"build/iot_link/os/liteos/malloc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/malloc.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/malloc.c -o build/iot_link/os/liteos/malloc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/liteos_errno.d" -MT"build/iot_link/os/liteos/liteos_errno.d" -MT"build/iot_link/os/liteos/liteos_errno.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/liteos_errno.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/liteos_errno.c -o build/iot_link/os/liteos/liteos_errno.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_swtmr.d" -MT"build/iot_link/os/liteos/base/core/los_swtmr.d" -MT"build/iot_link/os/liteos/base/core/los_swtmr.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_swtmr.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_swtmr.c -o build/iot_link/os/liteos/base/core/los_swtmr.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_priqueue.d" -MT"build/iot_link/os/liteos/base/core/los_priqueue.d" -MT"build/iot_link/os/liteos/base/core/los_priqueue.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_priqueue.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_priqueue.c -o build/iot_link/os/liteos/base/core/los_priqueue.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_task.d" -MT"build/iot_link/os/liteos/base/core/los_task.d" -MT"build/iot_link/os/liteos/base/core/los_task.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_task.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_task.c -o build/iot_link/os/liteos/base/core/los_task.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_timeslice.d" -MT"build/iot_link/os/liteos/base/core/los_timeslice.d" -MT"build/iot_link/os/liteos/base/core/los_timeslice.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_timeslice.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_timeslice.c -o build/iot_link/os/liteos/base/core/los_timeslice.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_sys.d" -MT"build/iot_link/os/liteos/base/core/los_sys.d" -MT"build/iot_link/os/liteos/base/core/los_sys.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_sys.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_sys.c -o build/iot_link/os/liteos/base/core/los_sys.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/core/los_tick.d" -MT"build/iot_link/os/liteos/base/core/los_tick.d" -MT"build/iot_link/os/liteos/base/core/los_tick.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/core/los_tick.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/core/los_tick.c -o build/iot_link/os/liteos/base/core/los_tick.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/ipc/los_rwlock.d" -MT"build/iot_link/os/liteos/base/ipc/los_rwlock.d" -MT"build/iot_link/os/liteos/base/ipc/los_rwlock.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/ipc/los_rwlock.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/ipc/los_rwlock.c -o build/iot_link/os/liteos/base/ipc/los_rwlock.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/ipc/los_mux.d" -MT"build/iot_link/os/liteos/base/ipc/los_mux.d" -MT"build/iot_link/os/liteos/base/ipc/los_mux.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/ipc/los_mux.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/ipc/los_mux.c -o build/iot_link/os/liteos/base/ipc/los_mux.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/ipc/los_sem.d" -MT"build/iot_link/os/liteos/base/ipc/los_sem.d" -MT"build/iot_link/os/liteos/base/ipc/los_sem.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/ipc/los_sem.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/ipc/los_sem.c -o build/iot_link/os/liteos/base/ipc/los_sem.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/ipc/los_event.d" -MT"build/iot_link/os/liteos/base/ipc/los_event.d" -MT"build/iot_link/os/liteos/base/ipc/los_event.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/ipc/los_event.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/ipc/los_event.c -o build/iot_link/os/liteos/base/ipc/los_event.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/ipc/los_queue.d" -MT"build/iot_link/os/liteos/base/ipc/los_queue.d" -MT"build/iot_link/os/liteos/base/ipc/los_queue.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/ipc/los_queue.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/ipc/los_queue.c -o build/iot_link/os/liteos/base/ipc/los_queue.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/heap/los_heap.d" -MT"build/iot_link/os/liteos/base/mem/heap/los_heap.d" -MT"build/iot_link/os/liteos/base/mem/heap/los_heap.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/heap/los_heap.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/heap/los_heap.c -o build/iot_link/os/liteos/base/mem/heap/los_heap.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/heap/los_memory.d" -MT"build/iot_link/os/liteos/base/mem/heap/los_memory.d" -MT"build/iot_link/os/liteos/base/mem/heap/los_memory.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/heap/los_memory.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/heap/los_memory.c -o build/iot_link/os/liteos/base/mem/heap/los_memory.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/membox/los_membox.d" -MT"build/iot_link/os/liteos/base/mem/membox/los_membox.d" -MT"build/iot_link/os/liteos/base/mem/membox/los_membox.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/membox/los_membox.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/membox/los_membox.c -o build/iot_link/os/liteos/base/mem/membox/los_membox.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/common/los_slab.d" -MT"build/iot_link/os/liteos/base/mem/common/los_slab.d" -MT"build/iot_link/os/liteos/base/mem/common/los_slab.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/common/los_slab.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/common/los_slab.c -o build/iot_link/os/liteos/base/mem/common/los_slab.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/common/los_slabmem.d" -MT"build/iot_link/os/liteos/base/mem/common/los_slabmem.d" -MT"build/iot_link/os/liteos/base/mem/common/los_slabmem.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/common/los_slabmem.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/common/los_slabmem.c -o build/iot_link/os/liteos/base/mem/common/los_slabmem.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/mem/common/los_memcheck.d" -MT"build/iot_link/os/liteos/base/mem/common/los_memcheck.d" -MT"build/iot_link/os/liteos/base/mem/common/los_memcheck.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/mem/common/los_memcheck.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/mem/common/los_memcheck.c -o build/iot_link/os/liteos/base/mem/common/los_memcheck.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/misc/los_misc.d" -MT"build/iot_link/os/liteos/base/misc/los_misc.d" -MT"build/iot_link/os/liteos/base/misc/los_misc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/misc/los_misc.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/misc/los_misc.c -o build/iot_link/os/liteos/base/misc/los_misc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/base/om/los_err.d" -MT"build/iot_link/os/liteos/base/om/los_err.d" -MT"build/iot_link/os/liteos/base/om/los_err.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/base/om/los_err.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/om/los_err.c -o build/iot_link/os/liteos/base/om/los_err.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/extended/tickless/los_tickless.d" -MT"build/iot_link/os/liteos/extended/tickless/los_tickless.d" -MT"build/iot_link/os/liteos/extended/tickless/los_tickless.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/os/liteos/extended/tickless/los_tickless.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/tickless/los_tickless.c -o build/iot_link/os/liteos/extended/tickless/los_tickless.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/shell/shell_test.d" -MT"build/iot_link/shell/shell_test.d" -MT"build/iot_link/shell/shell_test.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/shell/shell_test.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell/shell_test.c -o build/iot_link/shell/shell_test.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/shell/shell_main.d" -MT"build/iot_link/shell/shell_main.d" -MT"build/iot_link/shell/shell_main.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/shell/shell_main.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell/shell_main.c -o build/iot_link/shell/shell_main.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/shell/shell_cmd.d" -MT"build/iot_link/shell/shell_cmd.d" -MT"build/iot_link/shell/shell_cmd.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/shell/shell_cmd.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell/shell_cmd.c -o build/iot_link/shell/shell_cmd.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/stimer/stimer.d" -MT"build/iot_link/stimer/stimer.d" -MT"build/iot_link/stimer/stimer.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/stimer/stimer.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/stimer/stimer.c -o build/iot_link/stimer/stimer.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/queue/queue.d" -MT"build/iot_link/queue/queue.d" -MT"build/iot_link/queue/queue.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/queue/queue.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue/queue.c -o build/iot_link/queue/queue.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/driver/driver.d" -MT"build/iot_link/driver/driver.d" -MT"build/iot_link/driver/driver.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/driver/driver.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver/driver.c -o build/iot_link/driver/driver.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/at/at.d" -MT"build/iot_link/at/at.d" -MT"build/iot_link/at/at.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/at/at.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/at/at.c -o build/iot_link/at/at.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/crc/crc16.d" -MT"build/iot_link/crc/crc16.d" -MT"build/iot_link/crc/crc16.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/crc/crc16.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc/crc16.c -o build/iot_link/crc/crc16.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/crc/crc8.d" -MT"build/iot_link/crc/crc8.d" -MT"build/iot_link/crc/crc8.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/crc/crc8.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc/crc8.c -o build/iot_link/crc/crc8.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/crc/crc32.d" -MT"build/iot_link/crc/crc32.d" -MT"build/iot_link/crc/crc32.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/crc/crc32.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc/crc32.c -o build/iot_link/crc/crc32.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.d" -MT"build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.d" -MT"build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.c -o build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.d" -MT"build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.d" -MT"build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.c -o build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/storage/partition.d" -MT"build/iot_link/storage/partition.d" -MT"build/iot_link/storage/partition.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/storage/partition.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage/partition.c -o build/iot_link/storage/partition.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/storage/storage.d" -MT"build/iot_link/storage/storage.d" -MT"build/iot_link/storage/storage.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/storage/storage.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage/storage.c -o build/iot_link/storage/storage.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/demos/app_demo_main.d" -MT"build/iot_link/demos/app_demo_main.d" -MT"build/iot_link/demos/app_demo_main.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/demos/app_demo_main.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/demos/app_demo_main.c -o build/iot_link/demos/app_demo_main.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/link_main.d" -MT"build/iot_link/link_main.d" -MT"build/iot_link/link_main.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/iot_link/link_main.lst /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_main.c -o build/iot_link/link_main.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.d" -MT"build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.lst /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.c -o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Hardware/Src/hal_qspi_flash.d" -MT"build/Hardware/Src/hal_qspi_flash.d" -MT"build/Hardware/Src/hal_qspi_flash.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Hardware/Src/hal_qspi_flash.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Src/hal_qspi_flash.c -o build/Hardware/Src/hal_qspi_flash.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Hardware/Src/hal_rng.d" -MT"build/Hardware/Src/hal_rng.d" -MT"build/Hardware/Src/hal_rng.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Hardware/Src/hal_rng.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Src/hal_rng.c -o build/Hardware/Src/hal_rng.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Hardware/Src/hal_iwdg.d" -MT"build/Hardware/Src/hal_iwdg.d" -MT"build/Hardware/Src/hal_iwdg.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Hardware/Src/hal_iwdg.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Src/hal_iwdg.c -o build/Hardware/Src/hal_iwdg.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Hardware/OLED/oled.d" -MT"build/Hardware/OLED/oled.d" -MT"build/Hardware/OLED/oled.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Hardware/OLED/oled.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED/oled.c -o build/Hardware/OLED/oled.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Hardware/DHT11/dht11.d" -MT"build/Hardware/DHT11/dht11.d" -MT"build/Hardware/DHT11/dht11.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Hardware/DHT11/dht11.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.c -o build/Hardware/DHT11/dht11.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/main.d" -MT"build/Src/main.d" -MT"build/Src/main.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/main.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/main.c -o build/Src/main.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/system_stm32l4xx.d" -MT"build/Src/system_stm32l4xx.d" -MT"build/Src/system_stm32l4xx.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/system_stm32l4xx.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/system_stm32l4xx.c -o build/Src/system_stm32l4xx.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/stm32l4xx_it.d" -MT"build/Src/stm32l4xx_it.d" -MT"build/Src/stm32l4xx_it.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/stm32l4xx_it.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/stm32l4xx_it.c -o build/Src/stm32l4xx_it.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/sys_init.d" -MT"build/Src/sys_init.d" -MT"build/Src/sys_init.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/sys_init.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/sys_init.c -o build/Src/sys_init.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/usart.d" -MT"build/Src/usart.d" -MT"build/Src/usart.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/usart.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/usart.c -o build/Src/usart.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/uart_debug.d" -MT"build/Src/uart_debug.d" -MT"build/Src/uart_debug.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/uart_debug.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/uart_debug.c -o build/Src/uart_debug.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/dwt.d" -MT"build/Src/dwt.d" -MT"build/Src/dwt.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/dwt.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/dwt.c -o build/Src/dwt.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/i2c.d" -MT"build/Src/i2c.d" -MT"build/Src/i2c.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/i2c.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/i2c.c -o build/Src/i2c.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/gpio.d" -MT"build/Src/gpio.d" -MT"build/Src/gpio.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/gpio.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/gpio.c -o build/Src/gpio.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Src/rtc.d" -MT"build/Src/rtc.d" -MT"build/Src/rtc.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Src/rtc.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Src/rtc.c -o build/Src/rtc.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/uart_at/uart_at.d" -MT"build/uart_at/uart_at.d" -MT"build/uart_at/uart_at.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/uart_at/uart_at.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/uart_at/uart_at.c -o build/uart_at/uart_at.o +arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/Demos/use_coap_demo/use_coap_demo.d" -MT"build/Demos/use_coap_demo/use_coap_demo.d" -MT"build/Demos/use_coap_demo/use_coap_demo.o" -Wno-missing-braces -Wa,-a,-ad,-alms=build/Demos/use_coap_demo/use_coap_demo.lst /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Demos/use_coap_demo/use_coap_demo.c -o build/Demos/use_coap_demo/use_coap_demo.o +arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -D CONFIG_LINK_LOG_ENABLE=1 -D CONFIG_LITEOS_ENABLE=1 -D CONFIG_SHELL_ENABLE=1 -D CONFIG_DRIVER_ENABLE=1 -D CONFIG_AT_ENABLE=1 -D CONFIG_OC_COAP_BOUDICA120_ENABLE=1 -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG -D CONFIG_USE_COAP_ENABLE=1 -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/inc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_misc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/link_log -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/osal -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/common/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/cmsis -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/base/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/extended/include -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/shell -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/queue -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/driver -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/at -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/crc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/oc_coap_al -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/oc/oc_coap/boudica120_oc -I /home/fanxinhao/Work/LiteOS_Lab/iot_link/storage -I /home/fanxinhao/Work/LiteOS_Lab/iot_link -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/OS_CONFIG -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc -I /home/fanxinhao/Work/LiteOS_Lab/drivers/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/OLED -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Hardware/DHT11 -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Inc -I /home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476 -O0 -g -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.d" -MT"build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.o" -Wno-missing-braces /home/fanxinhao/Work/LiteOS_Lab/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.S -o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.o +arm-none-eabi-gcc build/iot_link/link_misc/link_ring_buffer.o build/iot_link/link_misc/link_random.o build/iot_link/link_misc/link_string.o build/iot_link/link_log/link_log.o build/iot_link/os/osal/osal.o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/los_exc.o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_dispatch.o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hwi.o build/iot_link/os/liteos/arch/arm/arm-m/src/los_mpu.o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw.o build/iot_link/os/liteos/arch/arm/arm-m/src/los_svc.o build/iot_link/os/liteos/arch/arm/arm-m/src/los_hw_tick.o build/iot_link/os/liteos/cmsis/cmsis_liteos.o build/iot_link/os/liteos/utils/rbtree.o build/iot_link/os/liteos/los_init.o build/iot_link/os/liteos/liteos_imp.o build/iot_link/os/liteos/newlib_stub.o build/iot_link/os/liteos/malloc.o build/iot_link/os/liteos/liteos_errno.o build/iot_link/os/liteos/base/core/los_swtmr.o build/iot_link/os/liteos/base/core/los_priqueue.o build/iot_link/os/liteos/base/core/los_task.o build/iot_link/os/liteos/base/core/los_timeslice.o build/iot_link/os/liteos/base/core/los_sys.o build/iot_link/os/liteos/base/core/los_tick.o build/iot_link/os/liteos/base/ipc/los_rwlock.o build/iot_link/os/liteos/base/ipc/los_mux.o build/iot_link/os/liteos/base/ipc/los_sem.o build/iot_link/os/liteos/base/ipc/los_event.o build/iot_link/os/liteos/base/ipc/los_queue.o build/iot_link/os/liteos/base/mem/heap/los_heap.o build/iot_link/os/liteos/base/mem/heap/los_memory.o build/iot_link/os/liteos/base/mem/membox/los_membox.o build/iot_link/os/liteos/base/mem/common/los_slab.o build/iot_link/os/liteos/base/mem/common/los_slabmem.o build/iot_link/os/liteos/base/mem/common/los_memcheck.o build/iot_link/os/liteos/base/misc/los_misc.o build/iot_link/os/liteos/base/om/los_err.o build/iot_link/os/liteos/extended/tickless/los_tickless.o build/iot_link/shell/shell_test.o build/iot_link/shell/shell_main.o build/iot_link/shell/shell_cmd.o build/iot_link/stimer/stimer.o build/iot_link/queue/queue.o build/iot_link/driver/driver.o build/iot_link/at/at.o build/iot_link/crc/crc16.o build/iot_link/crc/crc8.o build/iot_link/crc/crc32.o build/iot_link/oc/oc_coap/oc_coap_al/oc_coap_al.o build/iot_link/oc/oc_coap/boudica120_oc/boudica120_oc.o build/iot_link/storage/partition.o build/iot_link/storage/storage.o build/iot_link/demos/app_demo_main.o build/iot_link/link_main.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.o build/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.o build/Hardware/Src/hal_qspi_flash.o build/Hardware/Src/hal_rng.o build/Hardware/Src/hal_iwdg.o build/Hardware/OLED/oled.o build/Hardware/DHT11/dht11.o build/Src/main.o build/Src/system_stm32l4xx.o build/Src/stm32l4xx_it.o build/Src/sys_init.o build/Src/usart.o build/Src/uart_debug.o build/Src/dwt.o build/Src/i2c.o build/Src/gpio.o build/Src/rtc.o build/uart_at/uart_at.o build/Demos/use_coap_demo/use_coap_demo.o build/iot_link/os/liteos/arch/arm/arm-m/armv7-m/gcc/los_startup.o -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -specs=nano.specs -T/home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/GCC/os.ld -L/home/fanxinhao/Work/LiteOS_Lab/targets/STM32L476RG_NB476/Lib -lc -lm -lnosys -Wl,-Map=build/Huawei_LiteOS.map,--cref -Wl,--gc-sections -u _printf_float -o build/Huawei_LiteOS.elf +arm-none-eabi-size build/Huawei_LiteOS.elf + text data bss dec hex filename + 76528 848 10136 87512 155d8 build/Huawei_LiteOS.elf +arm-none-eabi-objcopy -O ihex build/Huawei_LiteOS.elf build/Huawei_LiteOS.hex +arm-none-eabi-objcopy -O binary -S build/Huawei_LiteOS.elf build/Huawei_LiteOS.bin diff --git a/targets/STM32L476RG_NB476/GCC/Makefile b/targets/STM32L476RG_NB476/GCC/Makefile new file mode 100644 index 000000000..297746dff --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/Makefile @@ -0,0 +1,170 @@ +################################################################################ +# STM32L431RGx_NB476 GCC compiler Makefile +################################################################################ +# ------------------------------------------------ +# Generic Makefile (based on gcc) +# ------------------------------------------------ + +################################################################################ +# target +################################################################################ +TARGET = Huawei_LiteOS +################################################################################ +# building variables +################################################################################ +# debug build? +DEBUG = 1 +# optimization +OPT = -O0 -g + +################################################################################ +# binaries +################################################################################ +PREFIX = arm-none-eabi- +CC = $(PREFIX)gcc +AS = $(PREFIX)gcc -x assembler-with-cpp +OBJCOPY = $(PREFIX)objcopy +OBJDUMP = $(PREFIX)objdump +AR = $(PREFIX)ar +SZ = $(PREFIX)size +LD = $(PREFIX)ld +HEX = $(OBJCOPY) -O ihex +BIN = $(OBJCOPY) -O binary -S + + +################################################################################ +# paths +################################################################################ +BUILD_DIR = build +LD_FILE = os.ld +MAKEFILE_DIR = $(abspath $(CURDIR)) +LDSCRIPT = $(MAKEFILE_DIR)/$(LD_FILE) +TARGET_DIR = $(abspath $(MAKEFILE_DIR)/..) + +#we should export the SDK_DIR FOR THE iot.mk and project.mk use +ifndef SDK_DIR + SDK_DIR :=$(abspath $(MAKEFILE_DIR)/../../..) +endif + +DRIVERLIB_DIR := $(SDK_DIR)/drivers +IOTLINK_DIR := $(SDK_DIR)/iot_link + +################################################################################ +#common variables for other module or components +C_SOURCES = +C_DEFS = +C_INCLUDES = +LDFLAGS = +ASM_SOURCES_S = +AS_DEFS = +AS_INCLUDES = +PERIFLIB_SOURCES = +LIBS = +LIBDIR = +LDFLAGS = +ASFLAGS = +CFLAGS = + +##########################LOAD THE SOURCES INCLUDES AND DEFINES################# +include ../.config +include $(SDK_DIR)/iot_link/iot.mk +include $(MAKEFILE_DIR)/project.mk + + +################################################################################ +# firmware library +################################################################################ + + +################################################################################ +# CFLAGS +################################################################################ +# cpu +CPU = -mcpu=cortex-m4 +# fpu +FPU = -mfpu=fpv4-sp-d16 +# float-abi +FLOAT-ABI = -mfloat-abi=hard +# mcu +MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) + +# compile gcc flags +ASFLAGS += $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +ifeq ($(DEBUG), 1) +CFLAGS += -g -gdwarf-2 +endif + +# Generate dependency information +CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$@" + +# excluded unnecessary warnings +CFLAGS += -Wno-missing-braces + + +# libraries +LIBS += -lc -lm -lnosys +LIBDIR += -L$(TARGET_DIR)/Lib +LDFLAGS += $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections +LDFLAGS += -u _printf_float + + +############HERE WE GET THE C_OBJECT S_OBJECT AND THE PATH ##################### +#all the code for the compile: +#iot_link: which indexed by the iot_link_root, it is the sdk main +#drivers: which maybe used by the targets, it is common for the MCUS +#targets: which developed by the user + +#changge the path for all the sources in directory iot_link targets drivers +#WE WILL CREATE SAME RELATION SHIP IN THE BUILD_DIR, AND IF YOU HAVE SOURCES +#out of SDK_DIR TARGET_DIR, please add them as THIS +C_OBJ := +C_OBJ += $(patsubst $(IOTLINK_DIR)/%.c,$(BUILD_DIR)/iot_link/%.o,$(filter $(IOTLINK_DIR)/%.c,$(C_SOURCES))) +C_OBJ += $(patsubst $(DRIVERLIB_DIR)/%.c,$(BUILD_DIR)/drivers/%.o,$(filter $(DRIVERLIB_DIR)/%.c,$(C_SOURCES))) +C_OBJ += $(patsubst $(TARGET_DIR)/%.c,$(BUILD_DIR)/%.o,$(filter $(TARGET_DIR)/%.c,$(C_SOURCES))) + +S_OBJ := +S_OBJ += $(patsubst $(IOTLINK_DIR)/%.S,$(BUILD_DIR)/iot_link/%.o,$(filter $(IOTLINK_DIR)/%.S,$(ASM_SOURCES_S))) +S_OBJ += $(patsubst $(DRIVERLIB_DIR)/%.S,$(BUILD_DIR)/drivers/%.o,$(filter $(DRIVERLIB_DIR)/%.S,$(ASM_SOURCES_S))) +S_OBJ += $(patsubst $(TARGET_DIR)/%.S,$(BUILD_DIR)/%.o,$(filter $(TARGET_DIR)/%.S,$(ASM_SOURCES_S))) + +OBJ_DIRS := +OBJ_DIRS += $(dir $(C_OBJ)) +OBJ_DIRS += $(dir $(S_OBJ)) +OBJ_DIRS := $(sort $(OBJ_DIRS)) + +#ADD THE SDK_DIR AND TARGET_DIR TO THE SEARCH PATH +vpath %.c $(SDK_DIR):$(TARGET_DIR) +vpath %.S $(SDK_DIR):$(TARGET_DIR) + +#NOW DO THE BUILDING +all:$(BUILD_DIR)/$(TARGET).elf + -$(HEX) $< $(BUILD_DIR)/$(TARGET).hex + -$(BIN) $< $(BUILD_DIR)/$(TARGET).bin + +$(BUILD_DIR)/$(TARGET).elf:$(OBJ_DIRS) $(C_OBJ) $(S_OBJ) + $(CC) $(C_OBJ) $(S_OBJ) $(LDFLAGS) -o $@ + $(SZ) $@ + +#create the necessary path for the object +$(OBJ_DIRS): + -mkdir -p $@ + +#compile the c file to the object, as you know we has map the .c to the .o +$(C_OBJ):$(BUILD_DIR)/%.o:%.c + $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(@:%.o=%.lst) $< -o $@ + +#compile the s fike to the object, as you know we has map the .S to the .o +$(S_OBJ):$(BUILD_DIR)/%.o:%.S + $(AS) -c $(CFLAGS) $< -o $@ + + +################################################################################ +# clean up: all you need to do is to remove the build dirs +################################################################################ +clean: + -rm -fR .dep $(BUILD_DIR) + +# *** EOF *** diff --git a/targets/STM32L476RG_NB476/GCC/Makefile_Sota b/targets/STM32L476RG_NB476/GCC/Makefile_Sota new file mode 100644 index 000000000..144b1e28a --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/Makefile_Sota @@ -0,0 +1,187 @@ +########################################################################################################################## +# Cloud_STM32F429IGTx_FIRE GCC compiler Makefile +########################################################################################################################## + +# ------------------------------------------------ +# Generate sota lib (based on gcc) +# ------------------------------------------------ + +###################################### +# target +###################################### +TARGET = libsota +###################################### +# building variables +###################################### +# debug build? +DEBUG = 0 +# optimization +OPT = -Og + +####################################### +# configuration +####################################### +OTA_IS_NEED_DTLS := yes +ifeq ($(OTA_IS_NEED_DTLS), yes) + OTA_PACK_CHECKSUM := CHECKSUM_SHA256_RSA2048 #(CHECKSUM_SHA256, CHECKSUM_SHA256_RSA2048) +else + OTA_PACK_CHECKSUM := CHECKSUM_NONE +endif +####################################### + +####################################### +# binaries +####################################### +PREFIX = arm-none-eabi- +CC = $(PREFIX)gcc +AS = $(PREFIX)gcc -x assembler-with-cpp +OBJCOPY = $(PREFIX)objcopy +OBJDUMP = $(PREFIX)objdump +AR = $(PREFIX)ar +SZ = $(PREFIX)size +LD = $(PREFIX)ld +HEX = $(OBJCOPY) -O ihex +BIN = $(OBJCOPY) -O binary -S + + +PROJECTBASE = $(PWD) +override PROJECTBASE := $(abspath $(PROJECTBASE)) +TOP_DIR = $(PROJECTBASE)/../../.. + + +####################################### +# paths +####################################### +# firmware library path +PERIFLIB_PATH = + +# Build path +BUILD_DIR = build +HWPATCH_BUILD_DIR = hwpatch + +# Lib path +LIBDIR = $(PROJECTBASE)/../Lib + +###################################### +# source +###################################### + +# C sources + +ifeq ($(OTA_IS_NEED_DTLS), yes) +MBEDTLS_SRC = \ + ${wildcard $(TOP_DIR)/components/security/mbedtls/mbedtls-2.6.0/library/*.c} + C_SOURCES += $(MBEDTLS_SRC) +endif + +SOTA_SRC = \ + ${wildcard $(TOP_DIR)/components/ota/sota/*.c} + C_SOURCES += $(SOTA_SRC) + +OTA_SRC = \ + ${wildcard $(TOP_DIR)/components/ota/flag_operate/*.c} \ + ${wildcard $(TOP_DIR)/components/ota/package/*.c} + C_SOURCES += $(OTA_SRC) + + +###################################### +# firmware library +###################################### +PERIFLIB_SOURCES = + + +####################################### +# CFLAGS +####################################### +# cpu +CPU = -mcpu=cortex-m4 +# fpu +FPU = -mfpu=fpv4-sp-d16 +# float-abi +FLOAT-ABI = -mfloat-abi=hard +# mcu +MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) + +# macros for gcc + +# C defines +C_DEFS = + +ifeq ($(OTA_IS_NEED_DTLS), yes) + C_DEFS += -D WITH_SOTA + C_DEFS += -D MBEDTLS_CONFIG_FILE=\"los_mbedtls_config.h\" +endif + +ifeq ($(OTA_PACK_CHECKSUM), CHECKSUM_NONE) + C_DEFS += -D PACK_CHECKSUM=2 +else ifeq ($(OTA_PACK_CHECKSUM), CHECKSUM_SHA256) + C_DEFS += -D PACK_CHECKSUM=1 +else ifeq ($(OTA_PACK_CHECKSUM), CHECKSUM_SHA256_RSA2048) + C_DEFS += -D PACK_CHECKSUM=0 +else +endif + + +# C includes + +INCLUDE_INC = \ + -I $(TOP_DIR)/include + C_INCLUDES += $(INCLUDE_INC) + +OTA_INC = \ + -I $(TOP_DIR)/components/ota/flag_operate \ + -I $(TOP_DIR)/components/ota/utility + C_INCLUDES += $(OTA_INC) + +MBEDTLS_INC = \ + -I $(TOP_DIR)/components/security/mbedtls/mbedtls-2.6.0/include + C_INCLUDES += $(MBEDTLS_INC) + +MBEDTLS_PORT_INC = \ + -I $(TOP_DIR)/components/security/mbedtls/mbedtls_port + C_INCLUDES += $(MBEDTLS_PORT_INC) + + +# compile gcc flags +CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +ifeq ($(DEBUG), 1) +CFLAGS += -g -gdwarf-2 +endif + + +# Generate dependency information +CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$@" + + +# default action: build all +all: $(BUILD_DIR)/$(HWPATCH_BUILD_DIR)/%.o $(BUILD_DIR)/$(TARGET).a + + +####################################### +# build the sota lib +####################################### +# list of objects +OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) +vpath %.c $(sort $(dir $(C_SOURCES))) + + +$(BUILD_DIR)/%.o: %.c | $(BUILD_DIR) + $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ + +$(BUILD_DIR)/$(HWPATCH_BUILD_DIR)/%.o: $(LIBDIR)/libhwpatch.a | $(BUILD_DIR) + cd $(BUILD_DIR)/$(HWPATCH_BUILD_DIR) && $(AR) -x $< + +$(BUILD_DIR)/$(TARGET).a: $(OBJECTS) $(BUILD_DIR)/$(HWPATCH_BUILD_DIR)/*.o + $(AR) -r -o $@ $^ && cp $(BUILD_DIR)/$(TARGET).a $(LIBDIR)/$(TARGET).a + $(SZ) $@ + + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR)/$(HWPATCH_BUILD_DIR) + +####################################### +# clean up +####################################### +clean: + -rm -fR .dep $(BUILD_DIR) $(LIBDIR)/$(TARGET).a \ No newline at end of file diff --git a/targets/STM32L476RG_NB476/GCC/os.ld b/targets/STM32L476RG_NB476/GCC/os.ld new file mode 100644 index 000000000..838eb7db9 --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/os.ld @@ -0,0 +1,217 @@ +/* +****************************************************************************** +** + +** File : LinkerScript.ld +** +** Author : Auto-generated by System Workbench for STM32 +** +** Abstract : Linker script for STM32L476RGTx series +** 1024Kbytes FLASH and 128Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2019 STMicroelectronics

+** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** 1. Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** 3. Neither the name of STMicroelectronics nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20018000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K +RAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K +FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(8); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(8); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(8); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(8); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + __oshell_start = .; + KEEP (*(oshell)) + __oshell_end = .; + + . = ALIGN(4); + __osdriv_start = .; + KEEP (*(osdriv)) + __osdriv_end = .; + + . = ALIGN(8); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(8); + } >FLASH + + .ARM.extab : + { + . = ALIGN(8); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(8); + } >FLASH + .ARM : { + . = ALIGN(8); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(8); + } >FLASH + + .preinit_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + } >FLASH + + .init_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + } >FLASH + .fini_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(8); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(8); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + . = ALIGN(8); + __los_heap_addr_start__ = .; + __los_heap_addr_end__ = ORIGIN(RAM) + LENGTH(RAM) - _Min_Stack_Size - 1; + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} + + diff --git a/targets/STM32L476RG_NB476/GCC/os_app.ld b/targets/STM32L476RG_NB476/GCC/os_app.ld new file mode 100644 index 000000000..e9cf10391 --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/os_app.ld @@ -0,0 +1,203 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32F4429IGTx Device with +** 1024KByte FLASH, 192KByte RAM, 64KByte CCM DATA RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ +/*THIS FILE USED TO GENERATE THE APPLICAITON,WHICH NEED THE LOADER SUPPORT*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20030000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 1024K-64K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K +CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + __oshell_start = .; + KEEP (*(oshell)) + __oshell_end = .; + + . = ALIGN(4); + __osdriv_start = .; + KEEP (*(osdriv)) + __osdriv_end = .; + + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + _siccmram = LOADADDR(.ccmram); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmram : + { + . = ALIGN(4); + _sccmram = .; /* create a global symbol at ccmram start */ + *(.ccmram) + *(.ccmram*) + + . = ALIGN(4); + _eccmram = .; /* create a global symbol at ccmram end */ + } >CCMRAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + . = ALIGN(8); + __los_heap_addr_start__ = .; + __los_heap_addr_end__ = ORIGIN(RAM) + LENGTH(RAM) - _Min_Stack_Size - 1; + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} + + diff --git a/targets/STM32L476RG_NB476/GCC/os_loader.ld b/targets/STM32L476RG_NB476/GCC/os_loader.ld new file mode 100644 index 000000000..def321efc --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/os_loader.ld @@ -0,0 +1,198 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32F4429IGTx Device with +** 1024KByte FLASH, 192KByte RAM, 64KByte CCM DATA RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ +/*THIS FILE USED TO GENERATE THE LOADER, which used to load the application*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x20030000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K +CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + __oshell_start = .; + KEEP (*(oshell)) + __oshell_end = .; + + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + _siccmram = LOADADDR(.ccmram); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .ccmram : + { + . = ALIGN(4); + _sccmram = .; /* create a global symbol at ccmram start */ + *(.ccmram) + *(.ccmram*) + + . = ALIGN(4); + _eccmram = .; /* create a global symbol at ccmram end */ + } >CCMRAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + . = ALIGN(8); + __los_heap_addr_start__ = .; + __los_heap_addr_end__ = ORIGIN(RAM) + LENGTH(RAM) - _Min_Stack_Size - 1; + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} + + diff --git a/targets/STM32L476RG_NB476/GCC/project.mk b/targets/STM32L476RG_NB476/GCC/project.mk new file mode 100644 index 000000000..f96c2dbe4 --- /dev/null +++ b/targets/STM32L476RG_NB476/GCC/project.mk @@ -0,0 +1,76 @@ +HAL_DRIVER_SRC = \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rcc_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_cortex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_uart_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_tim.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_i2c_ex.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_iwdg.c \ + $(SDK_DIR)/drivers/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.c + C_SOURCES += $(HAL_DRIVER_SRC) + +HARDWARE_SRC = \ + ${wildcard $(TARGET_DIR)/Hardware/Src/*.c} \ + ${wildcard $(TARGET_DIR)/Hardware/OLED/*.c} \ + ${wildcard $(TARGET_DIR)/Hardware/DHT11/*.c} + C_SOURCES += $(HARDWARE_SRC) + +HAL_DRIVER_SRC_NO_BOOTLOADER = \ + $(DRIVERLIB_DIR)/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c \ + $(DRIVERLIB_DIR)/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c \ + $(DRIVERLIB_DIR)/third_party/ST/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rng.c + C_SOURCES += $(HAL_DRIVER_SRC_NO_BOOTLOADER) + +USER_SRC = \ + $(TARGET_DIR)/Src/main.c \ + $(TARGET_DIR)/Src/system_stm32l4xx.c \ + $(TARGET_DIR)/Src/stm32l4xx_it.c \ + $(TARGET_DIR)/Src/sys_init.c \ + $(TARGET_DIR)/Src/usart.c \ + $(TARGET_DIR)/Src/uart_debug.c \ + $(TARGET_DIR)/Src/dwt.c \ + $(TARGET_DIR)/Src/i2c.c \ + $(TARGET_DIR)/Src/gpio.c\ + $(TARGET_DIR)/Src/rtc.c + C_SOURCES += $(USER_SRC) + +ifeq ($(CONFIG_AT_ENABLE),y) + UART_AT_SRC = $(TARGET_DIR)/uart_at/uart_at.c + C_SOURCES += $(UART_AT_SRC) +endif + + OS_CONFIG_INC = \ + -I $(TARGET_DIR)/OS_CONFIG + C_INCLUDES += $(OS_CONFIG_INC) +# C includes +HAL_DRIVER_INC = \ + -I $(DRIVERLIB_DIR)/third_party/ST/STM32L4xx_HAL_Driver/Inc \ + -I $(DRIVERLIB_DIR)/third_party/ST/STM32L4xx_HAL_Driver/Inc/Legacy + C_INCLUDES += $(HAL_DRIVER_INC) +HARDWARE_INC = \ + -I ${wildcard $(TARGET_DIR)/Hardware/Inc} \ + -I ${wildcard $(TARGET_DIR)/Hardware/OLED} \ + -I ${wildcard $(TARGET_DIR)/Hardware/DHT11} + C_INCLUDES += $(HARDWARE_INC) + +USER_INC = \ + -I $(TARGET_DIR)/Inc \ + -I $(TARGET_DIR) + C_INCLUDES += $(USER_INC) + +# C defines +C_DEFS += -D USE_HAL_DRIVER -D STM32L476xx -D NDEBUG + +include $(TARGET_DIR)/Demos/user_demo.mk + + diff --git a/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.c b/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.c new file mode 100644 index 000000000..f0ef29e32 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.c @@ -0,0 +1,183 @@ +#include "los_task.ph" +#include "dht11.h" + +static void DHT11_Mode_IPU(void); +static void DHT11_Mode_Out_PP(void); +static uint8_t DHT11_ReadByte(void); + +/* 函数体 --------------------------------------------------------------------*/ +/** + * 函数功能: + * 输入参数: 无 + * 返 回 值: 无 + * 说 明:无 + */ +void DHT11_Delay(uint32_t time) +{ + uint8_t i; + + while(time) + { + for (i = 0; i < 16; i++) + { + + } + time--; + } +} + +/** + * 函数功能: DHT11 初始化函数 + * 输入参数: 无 + * 返 回 值: 无 + * 说 明:无 + */ +void DHT11_Init ( void ) +{ + DHT11_Dout_GPIO_CLK_ENABLE(); + + DHT11_Mode_Out_PP(); + + DHT11_Dout_HIGH(); // 拉高GPIO + delay10ms(300); +} + +/** + * 函数功能: 使DHT11-DATA引脚变为上拉输入模式 + * 输入参数: 无 + * 返 回 值: 无 + * 说 明:无 + */ +static void DHT11_Mode_IPU(void) +{ + GPIO_InitTypeDef GPIO_InitStruct; + + /* 串口外设功能GPIO配置 */ + GPIO_InitStruct.Pin = DHT11_Dout_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct); + +} + +/** + * 函数功能: 使DHT11-DATA引脚变为推挽输出模式 + * 输入参数: 无 + * 返 回 值: 无 + * 说 明:无 + */ +static void DHT11_Mode_Out_PP(void) +{ + GPIO_InitTypeDef GPIO_InitStruct; + + /* 串口外设功能GPIO配置 */ + GPIO_InitStruct.Pin = DHT11_Dout_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct); +} + +/** + * 函数功能: 从DHT11读取一个字节,MSB先行 + * 输入参数: 无 + * 返 回 值: 无 + * 说 明:无 + */ +static uint8_t DHT11_ReadByte ( void ) +{ + uint8_t i, temp=0; + + for(i=0;i<8;i++) + { + /*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/ + while(DHT11_Data_IN()==GPIO_PIN_RESET); + + /*DHT11 以26~28us的高电平表示“0”,以70us高电平表示“1”, + *通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时 + */ + delayus(40); //延时x us 这个延时需要大于数据0持续的时间即可 + + if(DHT11_Data_IN()==GPIO_PIN_SET)/* x us后仍为高电平表示数据“1” */ + { + /* 等待数据1的高电平结束 */ + while(DHT11_Data_IN()==GPIO_PIN_SET); + + temp|=(uint8_t)(0x01<<(7-i)); //把第7-i位置1,MSB先行 + } + else // x us后为低电平表示数据“0” + { + temp&=(uint8_t)~(0x01<<(7-i)); //把第7-i位置0,MSB先行 + } + } + return temp; +} + + +/** + * 函数功能: 一次完整的数据传输为40bit,高位先出 + * 输入参数: DHT11_Data:DHT11数据类型 + * 返 回 值: ERROR: 读取出错 + * SUCCESS:读取成功 + * 说 明:8bit 湿度整数 + 8bit 湿度小数 + 8bit 温度整数 + 8bit 温度小数 + 8bit 校验和 + */ +uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data) +{ + uint8_t temp; + uint16_t humi_temp; + + /*输出模式*/ + DHT11_Mode_Out_PP(); + /*主机拉低*/ + DHT11_Dout_LOW(); + /*延时18ms*/ + LOS_TaskDelay(18); + + /*总线拉高 主机延时30us*/ + DHT11_Dout_HIGH(); + + delayus(30); //延时30us + + /*主机设为输入 判断从机响应信号*/ + DHT11_Mode_IPU(); + + /*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/ + if(DHT11_Data_IN()==GPIO_PIN_RESET) + { + /*轮询直到从机发出 的80us 低电平 响应信号结束*/ + while(DHT11_Data_IN()==GPIO_PIN_RESET); + + /*轮询直到从机发出的 80us 高电平 标置信号结束*/ + while(DHT11_Data_IN()==GPIO_PIN_SET); + + /*开始接收数据*/ + DHT11_Data->humi_high8bit= DHT11_ReadByte(); + DHT11_Data->humi_low8bit = DHT11_ReadByte(); + DHT11_Data->temp_high8bit= DHT11_ReadByte(); + DHT11_Data->temp_low8bit = DHT11_ReadByte(); + DHT11_Data->check_sum = DHT11_ReadByte(); + + /*读取结束,引脚改为输出模式*/ + DHT11_Mode_Out_PP(); + /*主机拉高*/ + DHT11_Dout_HIGH(); + + /* 对数据进行处理 */ + humi_temp=DHT11_Data->humi_high8bit*100+DHT11_Data->humi_low8bit; + DHT11_Data->humidity =(float)humi_temp/100; + + humi_temp=DHT11_Data->temp_high8bit*100+DHT11_Data->temp_low8bit; + DHT11_Data->temperature=(float)humi_temp/100; + + /*检查读取的数据是否正确*/ + temp = DHT11_Data->humi_high8bit + DHT11_Data->humi_low8bit + + DHT11_Data->temp_high8bit+ DHT11_Data->temp_low8bit; + if(DHT11_Data->check_sum==temp) + { + return SUCCESS; + } + else + return ERROR; + } + else + return ERROR; +} diff --git a/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.h b/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.h new file mode 100644 index 000000000..58dce1741 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/DHT11/dht11.h @@ -0,0 +1,29 @@ +#ifndef __DHT11_H__ +#define __DHT11_H__ + +#include "main.h" +#include "dwt.h" +/************************ DHT11 数据类型定义******************************/ +typedef struct +{ + uint8_t humi_high8bit; //原始数据:湿度高8位 + uint8_t humi_low8bit; //原始数据:湿度低8位 + uint8_t temp_high8bit; //原始数据:温度高8位 + uint8_t temp_low8bit; //原始数据:温度高8位 + uint8_t check_sum; //校验和 + float humidity; //实际湿度 + float temperature; //实际温度 +} DHT11_Data_TypeDef; + +#define DHT11_Dout_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define DHT11_Dout_PORT GPIOC +#define DHT11_Dout_PIN GPIO_PIN_13 + +#define DHT11_Dout_LOW() HAL_GPIO_WritePin(DHT11_Dout_PORT,DHT11_Dout_PIN,GPIO_PIN_RESET) +#define DHT11_Dout_HIGH() HAL_GPIO_WritePin(DHT11_Dout_PORT,DHT11_Dout_PIN,GPIO_PIN_SET) +#define DHT11_Data_IN() HAL_GPIO_ReadPin(DHT11_Dout_PORT,DHT11_Dout_PIN) + +void DHT11_Init( void ); +uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef * DHT11_Data); +void DHT11_Delay(uint32_t time); +#endif /* __DHT11_H__ */ diff --git a/targets/STM32L476RG_NB476/Hardware/Inc/hal_iwdg.h b/targets/STM32L476RG_NB476/Hardware/Inc/hal_iwdg.h new file mode 100644 index 000000000..7beb70158 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Inc/hal_iwdg.h @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + + /**@defgroup hal_iwdg Watch Dog + * @ingroup hal + */ + +#ifndef _HAL_IWDG_H_ +#define _HAL_IWDG_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + *@ingroup hal_iwdg + *@brief config the watch dog. + * + *@par Description: + *This API is used to config the watch dog. The time interval of feeding dog is prvscaler*reload/40. + *@attention none. + * + *@param prvscaler [IN] select the prescaler of the IWDG. + This parameter can be a value of @ref IWDG_Prescaler + *@param reload [IN] specifies the IWDG down-counter reload value. + This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see none. + */ +int hal_iwdg_config(uint8_t prvscaler, uint16_t reload); + +/** + *@ingroup hal_iwdg + *@brief feed the watch dog. + * + *@par Description: + *This API is used to feed the watch dog. + *@attention none. + * + *@param none. + * + *@retval none. + *@par Dependency: none. + *@see none. + */ +void hal_iwdg_feed(void); + +#if defined(__cplusplus) +} +#endif + +#endif /* _HAL_IWDG_H_ */ diff --git a/targets/STM32L476RG_NB476/Hardware/Inc/hal_qspi_flash.h b/targets/STM32L476RG_NB476/Hardware/Inc/hal_qspi_flash.h new file mode 100644 index 000000000..d136d96b3 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Inc/hal_qspi_flash.h @@ -0,0 +1,190 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + + /**@defgroup hal_spi_flash SPI Flash Interface + * @ingroup hal + */ + +#ifndef __HAL_SPI_FLASH_H__ +#define __HAL_SPI_FLASH_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + *@ingroup hal_spi_flash + *@brief config the spi flash. + * + *@par Description: + *This API is used to config the spi flash. + *@attention none. + * + *@param none. + * + *@retval none. + *@par Dependency: none. + *@see none. + */ +void hal_spi_flash_config(void); + +/** + *@ingroup hal_spi_flash + *@brief erase data of spi flash. + * + *@par Description: + *This API is used to erase data of spi flash. + *@attention none. + * + *@param addr [IN] the address of the spi flash to erase. + *@param len [IN] the number of bytes to be erased from addr. + Note that at lease 4K byte will be erased by once. + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see none. + */ +int hal_spi_flash_erase(uint32_t addr, int32_t len); + +/** + *@ingroup hal_spi_flash + *@brief write data to spi flash. + * + *@par Description: + *This API is used to write data to spi flash. You should call @hal_spi_flash_erase before this. + *location is updated by each call so that you don't need to care about write address if you do + *sequential write. + *@attention none. + * + *@param buf [IN] the data to be wrote to spi flash. + *@param len [IN] the length of the buffer. + *@param location [IN/OUT] the address of the spi flash to write. + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see hal_spi_flash_erase. + */ +int hal_spi_flash_write(const void* buf, int32_t len, uint32_t* location); + +/** + *@ingroup hal_spi_flash + *@brief write data to spi flash. + * + *@par Description: + *This API is used to write data to spi flash. You don't need to erase flash by this interface. + *@attention none. + * + *@param buf [IN] the data to be wrote to spi flash. + *@param len [IN] the length of the buffer. + *@param location [IN] the address of the spi flash to write. + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see none. + */ +int hal_spi_flash_erase_write(const void* buf, int32_t len, uint32_t location); + +/** + *@ingroup hal_spi_flash + *@brief read data from spi flash. + * + *@par Description: + *This API is used to read data from spi flash. + *@attention none. + * + *@param buf [OUT] buffer to store the data read from spi flash. + *@param len [IN] the length of the buffer. + *@param location [IN] the address of the spi flash to read. + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see none. + */ +int hal_spi_flash_read(void* buf, int32_t len, uint32_t location); + +/** + *@ingroup hal_spi_flash + *@brief get ID of the target spi flash. + * + *@par Description: + *This API is used to get ID of the target spi flash. + *@attention none. + * + *@param none. + * + *@retval #int ID of the spi flash. + *@par Dependency: none. + *@see none. + */ +int hal_spi_flash_get_id(void); + +/** + *@ingroup hal_spi_flash + *@brief power down the spi flash. + * + *@par Description: + *This API is used to power down the spi flash. + *@attention none. + * + *@param none. + * + *@retval none. + *@par Dependency: none. + *@see none. + */ +void hal_spi_flash_power_down(void); + +/** + *@ingroup hal_spi_flash + *@brief wake up the spi flash. + * + *@par Description: + *This API is used to wake up the spi flash. + *@attention none. + * + *@param none. + * + *@retval none. + *@par Dependency: none. + *@see none. + */ +void hal_spi_flash_wake_up(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_SPI_FLASH_H_ */ diff --git a/targets/STM32L476RG_NB476/Hardware/Inc/hal_rng.h b/targets/STM32L476RG_NB476/Hardware/Inc/hal_rng.h new file mode 100644 index 000000000..0ce365a31 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Inc/hal_rng.h @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + + /**@defgroup hal_rng Ramdon Number + * @ingroup hal + */ + +#ifndef _HAL_RNG_H_ +#define _HAL_RNG_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + *@ingroup hal_rng + *@brief config the rng. + * + *@par Description: + *This API is used to config the rng. + *@attention none. + * + *@param none. + * + *@retval none. + *@par Dependency: none. + *@see none. + */ +void hal_rng_config(void); + +/** + *@ingroup hal_rng + *@brief generate a random number. + * + *@par Description: + *This API is used to generate a random number. + *@attention none. + * + *@param none. + * + *@retval #int random number + *@par Dependency: none. + *@see none. + */ +int hal_rng_generate_number(void); + +/** + *@ingroup hal_rng + *@brief generate the random data. + * + *@par Description: + *This API is used to generate the random data. + *@attention none. + * + *@param buf [OUT] buffer to store the random data. + *@param len [IN] the length of the random data needed to generate. + * + *@retval #int 0 if succeed or -1 if failed. + *@par Dependency: none. + *@see none. + */ +int hal_rng_generate_buffer(void* buf, size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /* _HAL_RNG_H_ */ diff --git a/targets/STM32L476RG_NB476/Hardware/OLED/bmp.h b/targets/STM32L476RG_NB476/Hardware/OLED/bmp.h new file mode 100644 index 000000000..ac29bd108 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/OLED/bmp.h @@ -0,0 +1,80 @@ +////////////////////////////////////////////////////////////////////////////////// +// +// +//洢ͼƬݣͼƬСΪ64*32 +// +///////////////////////////////////////////////////////////////////////////////// + +#ifndef __BMP_H +#define __BMP_H +unsigned char BMP1[] = +{0x00,0x06,0x0A,0xFE,0x0A,0xC6,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x00,0x00,0x00, +0x00,0x00,0xFE,0x7D,0xBB,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xBB,0x7D, +0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, +0x0C,0xFE,0xFE,0x0C,0x08,0x20,0x60,0xFE,0xFE,0x60,0x20,0x00,0x00,0x00,0x78,0x48, +0xFE,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xFE,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0xFE,0xFF,0x03, +0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0xC0,0xC0, +0xC0,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, +0xFF,0xFE,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF, +0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C, +0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE1,0xE1, +0xE1,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF, +0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18, +0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, +0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F, +0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x8C,0x42,0x22,0x12,0x0C,0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x04, +0xFE,0x00,0x00,0x00,0x20,0x58,0x44,0xFE,0x40,0x00,0x10,0x10,0x10,0x10,0x10,0x00, +0x00,0x04,0xFE,0x00,0x00,0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x10,0x10,0x10,0x10, +0x10,0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x04,0xFE,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x24,0xA4,0x2E,0x24,0xE4,0x24,0x2E,0xA4,0x24,0x00,0x00,0x00,0xF8,0x4A,0x4C, +0x48,0xF8,0x48,0x4C,0x4A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01, +0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10, +0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0xC0,0x00,0x00, +0x00,0x12,0x0A,0x07,0x02,0x7F,0x02,0x07,0x0A,0x12,0x00,0x00,0x00,0x0B,0x0A,0x0A, +0x0A,0x7F,0x0A,0x0A,0x0A,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40, +0x40,0x50,0x20,0x5F,0x80,0x00,0x1F,0x20,0x40,0x40,0x40,0x50,0x20,0x5F,0x80,0x00, + +}; + +#endif + + diff --git a/targets/STM32L476RG_NB476/Hardware/OLED/oled.c b/targets/STM32L476RG_NB476/Hardware/OLED/oled.c new file mode 100644 index 000000000..91f0122a5 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/OLED/oled.c @@ -0,0 +1,240 @@ +#include "oled.h" +#include "dwt.h" +#include "oledfont.h" + +#define OLED_WR_address 0x78 + +extern I2C_HandleTypeDef hi2c1; +//OLED���Դ� +//��Ÿ�ʽ����. +//[0]0 1 2 3 ... 127 +//[1]0 1 2 3 ... 127 +//[2]0 1 2 3 ... 127 +//[3]0 1 2 3 ... 127 +//[4]0 1 2 3 ... 127 +//[5]0 1 2 3 ... 127 +//[6]0 1 2 3 ... 127 +//[7]0 1 2 3 ... 127 + +/********************************************** +// IIC Write Command +**********************************************/ +void Write_IIC_Command(unsigned char IIC_Command) +{ + uint8_t tmp[] = {0x00,IIC_Command};//�Ĵ�����ַ������ + HAL_I2C_Master_Transmit(&hi2c1, OLED_WR_address, tmp, 2,100); + delayus(1); +} + +/********************************************** +// IIC Write Data +**********************************************/ +void Write_IIC_Data(unsigned char IIC_Data) +{ + + uint8_t tmp[] = {0x40, IIC_Data};//���ݵ�ַ������ + HAL_I2C_Master_Transmit(&hi2c1, OLED_WR_address, tmp, 2, 20); +} + +void OLED_WR_Byte(uint8_t dat, uint8_t cmd) +{ + if(cmd) + { + Write_IIC_Data(dat); + }else{ + Write_IIC_Command(dat); + } +} + +//�������� +void OLED_Set_Pos(unsigned char x, unsigned char y) +{ + OLED_WR_Byte(0xb0+y, OLED_CMD); + OLED_WR_Byte(((x&0xf0)>>4)|0x10, OLED_CMD); + OLED_WR_Byte((x&0x0f), OLED_CMD); +} + +//����OLED��ʾ +void OLED_Display_On(void) +{ + OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC���� + OLED_WR_Byte(0X14, OLED_CMD); //DCDC ON + OLED_WR_Byte(0XAF, OLED_CMD); //DISPLAY ON +} + +//�ر�OLED��ʾ +void OLED_Display_Off(void) +{ + OLED_WR_Byte(0X8D, OLED_CMD); //SET DCDC���� + OLED_WR_Byte(0X10, OLED_CMD); //DCDC OFF + OLED_WR_Byte(0XAE, OLED_CMD); //DISPLAY OFF +} + +//��������,������,������Ļ�Ǻ�ɫ��!��û����һ��!!! +void OLED_Clear(void) +{ + uint8_t i, n; + for(i=0; i<8; i++) + { + OLED_WR_Byte (0xb0+i, OLED_CMD); //����ҳ��ַ��0~7�� + OLED_WR_Byte (0x00, OLED_CMD); //������ʾλ�á��е͵�ַ + OLED_WR_Byte (0x10, OLED_CMD); //������ʾλ�á��иߵ�ַ + for(n=0; n<128; n++) + OLED_WR_Byte(0, OLED_DATA); + } //������ʾ +} + +void OLED_On(void) +{ + uint8_t i, n; + for(i=0; i<8; i++) + { + OLED_WR_Byte (0xb0+i, OLED_CMD); //����ҳ��ַ��0~7�� + OLED_WR_Byte (0x00, OLED_CMD); //������ʾλ�á��е͵�ַ + OLED_WR_Byte (0x10, OLED_CMD); //������ʾλ�á��иߵ�ַ + for(n=0; n<128; n++) + OLED_WR_Byte(1, OLED_DATA); + } //������ʾ +} + + +//��ָ��λ����ʾһ���ַ�,���������ַ� +//x:0~127 +//y:0 2 4 6���ֱ��Ӧ��1��2��3��4�� +//size:ѡ�������С 16���߷�16 +void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size) +{ + unsigned char c=0, i=0; + c=chr - ' ';//�õ�ƫ�ƺ��ֵ + if(x > Max_Column - 1){x = 0;y = y+2;} + if(Char_Size == 16) + { + OLED_Set_Pos(x, y); + for(i=0; i<8; i++) + OLED_WR_Byte(F8X16[c*16+i], OLED_DATA); + OLED_Set_Pos(x , y+1); + for(i=0; i<8; i++) + OLED_WR_Byte(F8X16[c*16+i+8], OLED_DATA); + }else{ + OLED_Set_Pos(x, y); + for(i=0; i<6; i++) + OLED_WR_Byte(F6x8[c][i], OLED_DATA); + } +} + + +//��ʾһ���ַ��� +void OLED_ShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size) +{ + unsigned char j=0; + while (chr[j] != '\0') + { + OLED_ShowChar(x, y, chr[j], Char_Size); + x += 8; + if(x > 120) + { + x = 0; + y += 2; + } + j++; + } +} + +//��ʾ���� +void OLED_ShowCHinese(uint8_t x, uint8_t y, uint8_t no) +{ + uint8_t t, adder=0; + OLED_Set_Pos(x, y); + for(t=0; t<16; t++) + { + OLED_WR_Byte(Hzk[no][t], OLED_DATA); + adder+=1; + } + OLED_Set_Pos(x, y+1); + for(t=16; t<32; t++) + { + OLED_WR_Byte(Hzk[no][t], OLED_DATA); + adder+=1; + } +} + +/***********������������ʾ��ʾBMPͼƬ128��64��ʼ������(x,y),x�ķ�Χ0��127��yΪҳ�ķ�Χ0��7*****************/ +void OLED_DrawBMP(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1, unsigned char BMP[]) +{ + unsigned int j=0; + unsigned char x,y; + + for(y=y0; y +0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ? +0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @ +0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A +0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B +0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C +0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D +0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E +0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F +0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G +0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H +0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I +0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J +0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K +0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L +0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M +0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N +0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O +0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P +0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q +0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R +0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S +0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T +0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U +0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V +0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W +0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X +0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y +0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z +0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [ +0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55 +0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ] +0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^ +0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _ +0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// ' +0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a +0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b +0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c +0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d +0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e +0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f +0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g +0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h +0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i +0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j +0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k +0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l +0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m +0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n +0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o +0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p +0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q +0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r +0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s +0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t +0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u +0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v +0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w +0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x +0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y +0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z +0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines +}; +/****************************************8*16ĵ************************************/ +const unsigned char F8X16[]= +{ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0 + 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1 + 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2 + 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3 + 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4 + 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5 + 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6 + 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7 + 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8 + 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9 + 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10 + 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14 + 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15 + 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16 + 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17 + 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18 + 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19 + 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20 + 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21 + 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22 + 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23 + 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24 + 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25 + 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26 + 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27 + 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28 + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29 + 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30 + 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31 + 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32 + 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33 + 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34 + 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35 + 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36 + 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37 + 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38 + 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39 + 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40 + 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41 + 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42 + 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43 + 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44 + 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45 + 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46 + 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47 + 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48 + 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49 + 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50 + 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51 + 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52 + 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53 + 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54 + 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55 + 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56 + 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57 + 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58 + 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59 + 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60 + 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61 + 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63 + 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64 + 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65 + 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66 + 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67 + 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68 + 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69 + 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70 + 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71 + 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72 + 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73 + 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74 + 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75 + 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76 + 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77 + 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78 + 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79 + 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80 + 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81 + 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82 + 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83 + 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84 + 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85 + 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86 + 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87 + 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88 + 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89 + 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90 + 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91 + 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92 + 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93 + 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94 +}; +char Hzk[][32]={ +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x80,0xA0,0x90,0x8E,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0x88,0x80,0x80,0x00, +0x20,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x01,0x02,0x04,0x08,0x10,0x20,0x20,0x00,}, +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00, +0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x00,0xFE,0x22,0xFE,0x00,0xFE,0x22,0xFE,0x00,0xFC,0x16,0x25,0x84,0xFC,0x00,0x00, +0x60,0x1F,0x22,0xBF,0x40,0x3F,0x82,0xFF,0x00,0x13,0x12,0x12,0x52,0x82,0x7E,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x40,0x3C,0x10,0xFF,0x10,0x10,0x20,0x10,0x8F,0x78,0x08,0xF8,0x08,0xF8,0x00,0x00, +0x02,0x06,0x02,0xFF,0x01,0x01,0x04,0x42,0x21,0x18,0x46,0x81,0x40,0x3F,0x00,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x02,0xFE,0x92,0x92,0xFE,0x02,0x00,0x10,0x11,0x16,0xF0,0x14,0x13,0x10,0x00,0x00, +0x10,0x1F,0x08,0x08,0xFF,0x04,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x00,0xFE,0x02,0x22,0x42,0x82,0x72,0x02,0x22,0x42,0x82,0x72,0x02,0xFE,0x00,0x00, +0x00,0xFF,0x10,0x08,0x06,0x01,0x0E,0x10,0x08,0x06,0x01,0x4E,0x80,0x7F,0x00,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00, +0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x40,0x40,0x42,0xCC,0x00,0x10,0x10,0xFF,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,0x00, +0x00,0x00,0x00,0x3F,0x11,0x89,0x61,0x1F,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x00,}, + +/*-- : --*/ +/*-- 12; ¶ӦĵΪx=16x16 --*/ +{0x20,0x18,0x08,0xEA,0x2C,0x28,0x28,0x2F,0x28,0x28,0x2C,0xEA,0x08,0x28,0x18,0x00, +0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x48,0x40,0x40,0x00,}, + + +}; + +#endif + + diff --git a/targets/STM32L476RG_NB476/Hardware/Src/hal_iwdg.c b/targets/STM32L476RG_NB476/Hardware/Src/hal_iwdg.c new file mode 100644 index 000000000..4dcdabcfc --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Src/hal_iwdg.c @@ -0,0 +1,61 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "hal_iwdg.h" +#include "stm32l4xx.h" +#include "stm32l4xx_hal_iwdg.h" + +#ifdef HAL_IWDG_MODULE_ENABLED + +IWDG_HandleTypeDef g_iwdg_handle; + +int hal_iwdg_config(uint8_t prvscaler, uint16_t reload) +{ + g_iwdg_handle.Instance = IWDG; + g_iwdg_handle.Init.Prescaler = prvscaler; + g_iwdg_handle.Init.Reload = reload; + + if (HAL_IWDG_Init(&g_iwdg_handle) != HAL_OK) + { + return -1; + } + return 0; +} + +void hal_iwdg_feed(void) +{ + (void)HAL_IWDG_Refresh(&g_iwdg_handle); +} + +#endif /* HAL_IWDG_MODULE_ENABLED */ diff --git a/targets/STM32L476RG_NB476/Hardware/Src/hal_qspi_flash.c b/targets/STM32L476RG_NB476/Hardware/Src/hal_qspi_flash.c new file mode 100644 index 000000000..e06fdb312 --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Src/hal_qspi_flash.c @@ -0,0 +1,426 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "hal_qspi_flash.h" +#include "stm32l4xx.h" + +#ifdef HAL_QSPI_MODULE_ENABLED + +#define QSPI_FLASH_PAGESIZE 256 +#define QSPI_FLASH_SECTOR 4096 +#define QSPI_FLASH_ID 0xEF4017 +#define QSPI_FLASH_TOTAL_SIZE 0x7FFFFF + +#define QSPI_FLASH_WriteEnable 0x06 +#define QSPI_FLASH_WriteDisable 0x04 +#define QSPI_FLASH_ReadStatusReg 0x05 +#define QSPI_FLASH_WriteStatusReg 0x01 +#define QSPI_FLASH_ReadData 0x03 +#define QSPI_FLASH_FastReadData 0x0B +#define QSPI_FLASH_FastReadDual 0x3B +#define QSPI_FLASH_PageProgram 0x02 +#define QSPI_FLASH_BlockErase 0xD8 +#define QSPI_FLASH_SectorErase 0x20 +#define QSPI_FLASH_ChipErase 0xC7 +#define QSPI_FLASH_PowerDown 0xB9 +#define QSPI_FLASH_ReleasePowerDown 0xAB +#define QSPI_FLASH_DeviceID 0xAB +#define QSPI_FLASH_ManufactDeviceID 0x90 +#define QSPI_FLASH_JedecDeviceID 0x9F +#define QSPI_FLASH_WIP_FLAG 0x01 +#define QSPI_FLASH_DUMMY_BYTE 0xFF + +#define CHOOSE_BIT_16 16 +#define CHOOSE_BIT_8 8 + + +#define CHECK_RET_RETURN(ret) \ + do \ + { \ + if ((ret) < 0) \ + { \ + return ret; \ + } \ + } while (0) + +QSPI_HandleTypeDef hqspi; + +/* This function is called by inner-HAL lib */ +void HAL_QSPI_MspInit(QSPI_HandleTypeDef* qspiHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct; + if(qspiHandle->Instance==QUADSPI) + { + /* USER CODE BEGIN QUADSPI_MspInit 0 */ + + /* USER CODE END QUADSPI_MspInit 0 */ + /* QUADSPI clock enable */ + __HAL_RCC_QSPI_CLK_ENABLE(); + + /**QUADSPI GPIO Configuration + PB0 ------> QUADSPI_BK1_IO1 + PB1 ------> QUADSPI_BK1_IO0 + PB10 ------> QUADSPI_CLK + PB11 ------> QUADSPI_BK1_NCS + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN QUADSPI_MspInit 1 */ + + /* USER CODE END QUADSPI_MspInit 1 */ + } +} + +/* This function is called by inner-HAL lib */ +void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* qspiHandle) +{ + + if(qspiHandle->Instance==QUADSPI) + { + /* USER CODE BEGIN QUADSPI_MspDeInit 0 */ + + /* USER CODE END QUADSPI_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_QSPI_CLK_DISABLE(); + + /**QUADSPI GPIO Configuration + PB0 ------> QUADSPI_BK1_IO1 + PB1 ------> QUADSPI_BK1_IO0 + PB10 ------> QUADSPI_CLK + PB11 ------> QUADSPI_BK1_NCS + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11); + + /* USER CODE BEGIN QUADSPI_MspDeInit 1 */ + + /* USER CODE END QUADSPI_MspDeInit 1 */ + } +} + + +/** + * @brief QSPI + * + * @param instruction Ҫ͵ָ + * @param address ͵Ŀĵַ + * @param dummyCycles ָ + * @param instructionMode ָģʽ;QSPI_INSTRUCTION_NONE,QSPI_INSTRUCTION_1_LINE,QSPI_INSTRUCTION_2_LINE,QSPI_INSTRUCTION_4_LINE + * @param addressMode ַģʽ; QSPI_ADDRESS_NONE,QSPI_ADDRESS_1_LINE,QSPI_ADDRESS_2_LINE,QSPI_ADDRESS_4_LINE + * @param addressSize ַ;QSPI_ADDRESS_8_BITS,QSPI_ADDRESS_16_BITS,QSPI_ADDRESS_24_BITS,QSPI_ADDRESS_32_BITS + * @param dataMode ģʽ; QSPI_DATA_NONE,QSPI_DATA_1_LINE,QSPI_DATA_2_LINE,QSPI_DATA_4_LINE + * + * @return void + */ +uint32_t QSPI_Send_CMD(uint32_t instruction, uint32_t address, uint32_t dummyCycles, uint32_t instructionMode, uint32_t addressMode, uint32_t addressSize, uint32_t dataMode) +{ + QSPI_CommandTypeDef s_command; + + s_command.Instruction = instruction; //ָ + s_command.Address = address; //ַ + s_command.DummyCycles = dummyCycles; //ÿָ + s_command.InstructionMode = instructionMode; //ָģʽ + s_command.AddressMode = addressMode; //ַģʽ + s_command.AddressSize = addressSize; //ַ + s_command.DataMode = dataMode; //ģʽ + s_command.SIOOMode = QSPI_SIOO_INST_EVERY_CMD; //ÿζָ + s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //޽ֽ + s_command.DdrMode = QSPI_DDR_MODE_DISABLE; //رDDRģʽ + s_command.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY; + + return HAL_QSPI_Command(&hqspi, &s_command, 5000); +} + +uint8_t QSPI_Receive(const uint8_t * buf, uint32_t datalen) +{ + hqspi.Instance->DLR = datalen - 1; //Configuration data length + if(HAL_QSPI_Receive(&hqspi, (uint8_t * )buf, 5000) == HAL_OK) return 0; //receive data + + else return 1; +} + +uint8_t QSPI_Transmit(const int8_t * buf, uint32_t datalen) +{ + hqspi.Instance->DLR = datalen - 1; //Configuration data length + if(HAL_QSPI_Transmit(&hqspi, (uint8_t * )buf, 5000) == HAL_OK) return 0; //send data + + else return 1; +} + +static void prv_spi_flash_write_enable(void) +{ + QSPI_Send_CMD(QSPI_FLASH_WriteEnable, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_NONE); +} + +static void prv_spi_flash_wait_write_end(void) +{ + uint8_t status = 0; + + + /* Loop as long as the memory is busy with a write cycle */ + do + { + /* Send a dummy byte to generate the clock needed by the FLASH + and put the value of the status register in status variable */ + QSPI_Send_CMD(QSPI_FLASH_ReadStatusReg, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_NONE, QSPI_ADDRESS_8_BITS, QSPI_DATA_1_LINE); + QSPI_Receive(&status, 1); + + } while ((status & QSPI_FLASH_WIP_FLAG) == SET); /* Write in progress */ + +} + +static int prv_spi_flash_write_page(const uint8_t* buf, uint32_t addr, int32_t len) +{ + int ret = 0; + + if(0 == len) + { + return 0; + } + + prv_spi_flash_write_enable(); //Write enable + + QSPI_Send_CMD(QSPI_FLASH_PageProgram, addr, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_1_LINE, QSPI_ADDRESS_24_BITS, QSPI_DATA_1_LINE); + QSPI_Transmit((const int8_t *)buf, len); + + prv_spi_flash_wait_write_end(); //Waiting for Writing to End + + return ret; +} + + int prv_spi_flash_erase_sector(uint32_t addr) +{ + //printf("fe:%x\r\n",addr); //flash, + int ret = 0; + prv_spi_flash_write_enable(); //Write enable + prv_spi_flash_wait_write_end(); + + ret=QSPI_Send_CMD(QSPI_FLASH_SectorErase, addr, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_1_LINE, QSPI_ADDRESS_24_BITS, QSPI_DATA_NONE); + + prv_spi_flash_wait_write_end(); //Waiting for Writing to End + + return ret; +} + +void hal_spi_flash_config(void) +{ + hqspi.Instance = QUADSPI; + hqspi.Init.ClockPrescaler = 0; + hqspi.Init.FifoThreshold = 4; + hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE; + hqspi.Init.FlashSize = POSITION_VAL(0x1000000) - 1; + hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_4_CYCLE; + hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0; + hqspi.Init.FlashID = QSPI_FLASH_ID_1; + hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE; + if (HAL_QSPI_Init(&hqspi) != HAL_OK) + { + Error_Handler(); + } + +} + +int hal_spi_flash_erase(uint32_t addr, int32_t len) +{ + uint32_t begin; + uint32_t end; + int i; + + if (len < 0 + || addr > QSPI_FLASH_TOTAL_SIZE + || addr + len > QSPI_FLASH_TOTAL_SIZE) + { + return -1; + } + + begin = addr / QSPI_FLASH_SECTOR * QSPI_FLASH_SECTOR; + end = (addr + len - 1) / QSPI_FLASH_SECTOR * QSPI_FLASH_SECTOR; + + for (i = begin; i <= end; i += QSPI_FLASH_SECTOR) + { + if (prv_spi_flash_erase_sector(i) == -1) + { + return -1; + } + } + + return 0; +} + +int hal_spi_flash_write(const void* buf, int32_t len, uint32_t* location) +{ + const uint8_t* pbuf = (const uint8_t*)buf; + int page_cnt = 0; + int remain_cnt = 0; + int temp = 0; + uint32_t loc_addr; + uint8_t addr = 0; + uint8_t count = 0; + int i; + int ret = 0; + + if (NULL == pbuf + || NULL == location + || len < 0 + || *location > QSPI_FLASH_TOTAL_SIZE + || len + *location > QSPI_FLASH_TOTAL_SIZE) + { + return -1; + } + + loc_addr = *location; + addr = loc_addr % QSPI_FLASH_PAGESIZE; + count = QSPI_FLASH_PAGESIZE - addr; + page_cnt = len / QSPI_FLASH_PAGESIZE; + remain_cnt = len % QSPI_FLASH_PAGESIZE; + + if (addr == 0) /* addr is aligned to SPI_FLASH_PAGESIZE */ + { + if (page_cnt == 0) /* len < SPI_FLASH_PAGESIZE */ + { + ret = prv_spi_flash_write_page(pbuf, loc_addr, len); + CHECK_RET_RETURN(ret); + } + else /* len > SPI_FLASH_PAGESIZE */ + { + for (i = 0; i < page_cnt; ++i) + { + ret = prv_spi_flash_write_page(pbuf + i * QSPI_FLASH_PAGESIZE, loc_addr, QSPI_FLASH_PAGESIZE); + CHECK_RET_RETURN(ret); + loc_addr += QSPI_FLASH_PAGESIZE; + } + + ret = prv_spi_flash_write_page(pbuf + page_cnt * QSPI_FLASH_PAGESIZE, loc_addr, remain_cnt); + CHECK_RET_RETURN(ret); + } + } + else /* addr is not aligned to SPI_FLASH_PAGESIZE */ + { + if (page_cnt == 0) /* len < SPI_FLASH_PAGESIZE */ + { + if (remain_cnt > count) /* (len + loc_addr) > SPI_FLASH_PAGESIZE */ + { + temp = remain_cnt - count; + + ret = prv_spi_flash_write_page(pbuf, loc_addr, count); + CHECK_RET_RETURN(ret); + + ret = prv_spi_flash_write_page(pbuf + count, loc_addr + count, temp); + CHECK_RET_RETURN(ret); + } + else + { + ret = prv_spi_flash_write_page(pbuf, loc_addr, len); + CHECK_RET_RETURN(ret); + } + } + else /* len > SPI_FLASH_PAGESIZE */ + { + len -= count; + page_cnt = len / QSPI_FLASH_PAGESIZE; + remain_cnt = len % QSPI_FLASH_PAGESIZE; + + ret = prv_spi_flash_write_page(pbuf, loc_addr, count); + CHECK_RET_RETURN(ret); + loc_addr += count; + + for (i = 0; i < page_cnt; ++i) + { + ret = prv_spi_flash_write_page(pbuf + count + i * QSPI_FLASH_PAGESIZE, loc_addr, QSPI_FLASH_PAGESIZE); + CHECK_RET_RETURN(ret); + loc_addr += QSPI_FLASH_PAGESIZE; + } + + if (remain_cnt != 0) + { + ret = prv_spi_flash_write_page(pbuf + count + page_cnt * QSPI_FLASH_PAGESIZE, loc_addr, remain_cnt); + CHECK_RET_RETURN(ret); + } + } + } + + *location += len; + return ret; + +} + +int hal_spi_flash_erase_write(const void* buf, int32_t len, uint32_t location) +{ + int ret = 0; + + ret = hal_spi_flash_erase(location, len); + CHECK_RET_RETURN(ret); + ret = hal_spi_flash_write(buf, len, &location); + + return ret; +} + +int hal_spi_flash_read(void* buf, int32_t len, uint32_t location) +{ + int ret = 0; + uint8_t* pbuf = (uint8_t*)buf; + + if (NULL == pbuf + || len < 0 + || location > QSPI_FLASH_TOTAL_SIZE + || len + location > QSPI_FLASH_TOTAL_SIZE) + { + return -1; + } + + QSPI_Send_CMD(QSPI_FLASH_FastReadData, location, 8, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_1_LINE, QSPI_ADDRESS_24_BITS, QSPI_DATA_1_LINE); + QSPI_Receive(buf, len); + + return ret; + +} + +int hal_spi_flash_get_id(void) +{ + + uint8_t temp[2]; + uint16_t deviceid; + QSPI_Send_CMD(QSPI_FLASH_JedecDeviceID, 0, 0, QSPI_INSTRUCTION_1_LINE, QSPI_ADDRESS_1_LINE, QSPI_ADDRESS_24_BITS, QSPI_DATA_1_LINE); + QSPI_Receive(temp, 2); + deviceid = (temp[0] << 8) | temp[1]; + return deviceid; +} + + +#endif /* HAL_QSPI_MODULE_ENABLED */ diff --git a/targets/STM32L476RG_NB476/Hardware/Src/hal_rng.c b/targets/STM32L476RG_NB476/Hardware/Src/hal_rng.c new file mode 100644 index 000000000..8a2ec9cbc --- /dev/null +++ b/targets/STM32L476RG_NB476/Hardware/Src/hal_rng.c @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include +#include "hal_rng.h" +#include "stm32l4xx.h" +#include "stm32l4xx_hal_rng.h" + +#ifdef HAL_RNG_MODULE_ENABLED + +RNG_HandleTypeDef g_rng_handle; + +void hal_rng_config(void) +{ + __HAL_RCC_RNG_CLK_ENABLE(); + g_rng_handle.Instance = RNG; + (void)HAL_RNG_Init(&g_rng_handle); +} + +int hal_rng_generate_number() +{ + uint32_t random_number; + + if (HAL_RNG_GenerateRandomNumber(&g_rng_handle, &random_number) != HAL_OK) + { + return 0U; + } + + return (int)random_number; +} + +int hal_rng_generate_buffer(void* buf, size_t len) +{ + size_t i; + uint32_t random_number; + uint8_t* pbuf; + + if (NULL == buf) + { + return -1; + } + + pbuf = (uint8_t*)buf; + + for (i = 0; i < len; i += sizeof(uint32_t)) + { + if (HAL_RNG_GenerateRandomNumber(&g_rng_handle, &random_number) != HAL_OK) + { + return -1; + } + memcpy(pbuf + i, &random_number, + sizeof(uint32_t) > len - i ? len - i : sizeof(uint32_t)); + } + + return 0; +} + +#endif /* HAL_RNG_MODULE_ENABLED */ diff --git a/targets/STM32L476RG_NB476/Inc/at_hal.h b/targets/STM32L476RG_NB476/Inc/at_hal.h new file mode 100644 index 000000000..7c86ffbe1 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/at_hal.h @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#ifndef __AT_HAL_H__ +#define __AT_HAL_H__ + +#include "at_frame/at_main.h" + +void at_transmit(uint8_t * cmd, int32_t len,int flag); +int32_t at_usart_init(void); +void at_usart_deinit(void); +int read_resp(uint8_t *buf, recv_buff* recv_buf); +void write_at_task_msg(at_msg_type_e type); + + +#endif + + diff --git a/targets/STM32L476RG_NB476/Inc/board.h b/targets/STM32L476RG_NB476/Inc/board.h new file mode 100644 index 000000000..f858933b9 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/board.h @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#ifndef _BOARD_H_ +#define _BOARD_H_ + +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +// error code +#define OTA_ERRNO_OK 0 +#define OTA_ERRNO_ILEGAL_PARAM -1 +#define OTA_ERRNO_INTEGRITY_CHECK -2 +#define OTA_ERRNO_SPI_FLASH_READ -3 +#define OTA_ERRNO_SPI_FLASH_WRITE -4 +#define OTA_ERRNO_INNER_FLASH_READ -5 +#define OTA_ERRNO_INNER_FLASH_WRITE -6 +#define OTA_ERRNO_ILEGAL_PC -7 +#define OTA_ERRNO_ILEGAL_STACK -8 +#define OTA_ERRNO_INTERNEL -9 + +// SPI flash address +#define OTA_FLAG_ADDR1 0x00000000 +#define OTA_FLAG_ADDR2 0x00004000 +#define MQTT_INFO_ADDR 0x00008000 +#define MQTT_INFO_SIZE 0x00008000 +#define OTA_IMAGE_DOWNLOAD_ADDR (MQTT_INFO_ADDR + MQTT_INFO_SIZE) +#define OTA_IMAGE_DOWNLOAD_SIZE 0x00040000 +#define OTA_IMAGE_BCK_ADDR (OTA_IMAGE_DOWNLOAD_ADDR + OTA_IMAGE_DOWNLOAD_SIZE) +#define OTA_IMAGE_BCK_SIZE 0x00040000 +#define OTA_IMAGE_DIFF_UPGRADE_ADDR (OTA_IMAGE_BCK_ADDR + OTA_IMAGE_BCK_SIZE) +#define OTA_IMAGE_DIFF_UPGRADE_SIZE 0x00040000 + +// Built in flash address +#define OTA_DEFAULT_IMAGE_ADDR 0x08010000 + +int board_jump2app(void); +int board_update_copy(int32_t old_image_len, int32_t new_image_len, uint32_t new_image_addr); +int board_rollback_copy(int32_t image_len); + +#if defined(__cplusplus) +} +#endif + +#endif /* _BOARD_H_*/ + + diff --git a/targets/STM32L476RG_NB476/Inc/common.h b/targets/STM32L476RG_NB476/Inc/common.h new file mode 100644 index 000000000..23862b2ee --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/common.h @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +/**@defgroup atiny_adapter Agenttiny Adapter + * @ingroup agent + */ + +#ifndef COMMON_H +#define COMMON_H +#include +#include +#include "osdepends/atiny_osdep.h" + +#define OK 0 +#define ERR -1 + +#define HAL_OTA_LOG(fmt, ...) \ +(void)printf("[%s:%d][%lu]" fmt "\r\n", __FUNCTION__, __LINE__, (uint32_t) atiny_gettime_ms(), ##__VA_ARGS__) + + +#endif //COMMON_H + + diff --git a/targets/STM32L476RG_NB476/Inc/dwt.h b/targets/STM32L476RG_NB476/Inc/dwt.h new file mode 100644 index 000000000..c07f43e47 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/dwt.h @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#ifndef __DWT_H_ +#define __DWT_H_ +#include "stm32l4xx.h" +#include "los_hwi.h" +#define DWT_CR *(volatile uint32_t *)0xE0001000 + +#define DWT_CYCCNT *(volatile uint32_t *)0xE0001004 + +#define DEM_CR *(volatile uint32_t *)0xE000EDFC + +#define DEM_CR_TRCENA (1 << 24) + +#define DWT_CR_CYCCNTENA (1 << 0) + +#define delayms(msec) delayus(msec*1000) + +void dwt_delay_init(uint32_t clk); +void delayus(uint32_t usec); +void delay10ms(__IO uint32_t nTime); +#endif diff --git a/targets/STM32L476RG_NB476/Inc/gpio.h b/targets/STM32L476RG_NB476/Inc/gpio.h new file mode 100644 index 000000000..6a60e56fe --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/gpio.h @@ -0,0 +1,57 @@ +/** + ****************************************************************************** + * File Name : gpio.h + * Description : This file contains all the functions prototypes for + * the gpio + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __gpio_H +#define __gpio_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_GPIO_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ pinoutConfig_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/i2c.h b/targets/STM32L476RG_NB476/Inc/i2c.h new file mode 100644 index 000000000..68e67e5c6 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/i2c.h @@ -0,0 +1,58 @@ +/** + ****************************************************************************** + * File Name : I2C.h + * Description : This file provides code for the configuration + * of the I2C instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __i2c_H +#define __i2c_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ +extern void _Error_Handler(char *, int); +/* USER CODE END Includes */ + +extern I2C_HandleTypeDef hi2c1; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_I2C1_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ i2c_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/main.h b/targets/STM32L476RG_NB476/Inc/main.h new file mode 100644 index 000000000..8c8929b8e --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/main.h @@ -0,0 +1,101 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_hal.h" +/* Includes LiteOS------------------------------------------------------------------*/ + +#include "los_base.h" +#include "los_config.h" +#include "los_sys.h" +#include "los_typedef.h" +#include "los_event.ph" +#include "los_event.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void _Error_Handler(char *, int); + +#define Error_Handler() _Error_Handler(__FILE__, __LINE__) + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define DHT11_DATA_Pin GPIO_PIN_13 +#define DHT11_DATA_GPIO_Port GPIOC +#define KEY4_Pin GPIO_PIN_0 +#define KEY4_GPIO_Port GPIOC +#define KEY3_Pin GPIO_PIN_1 +#define KEY3_GPIO_Port GPIOC +#define KEY2_Pin GPIO_PIN_2 +#define KEY2_GPIO_Port GPIOC +#define KEY1_Pin GPIO_PIN_3 +#define KEY1_GPIO_Port GPIOC +#define LED_Pin GPIO_PIN_2 +#define LED_GPIO_Port GPIOB +#define NB_RI_Pin GPIO_PIN_15 +#define NB_RI_GPIO_Port GPIOB +#define NB_EN_Pin GPIO_PIN_6 +#define NB_EN_GPIO_Port GPIOC +#define OLED_SCL_Pin GPIO_PIN_6 +#define OLED_SCL_GPIO_Port GPIOB +#define OLED_SDA_Pin GPIO_PIN_7 +#define OLED_SDA_GPIO_Port GPIOB +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/rtc.h b/targets/STM32L476RG_NB476/Inc/rtc.h new file mode 100644 index 000000000..89675029b --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/rtc.h @@ -0,0 +1,58 @@ +/** + ****************************************************************************** + * File Name : RTC.h + * Description : This file provides code for the configuration + * of the RTC instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __rtc_H +#define __rtc_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern RTC_HandleTypeDef hrtc; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_RTC_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ rtc_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/stm32l476xx.h b/targets/STM32L476RG_NB476/Inc/stm32l476xx.h new file mode 100644 index 000000000..923447b8c --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/stm32l476xx.h @@ -0,0 +1,18481 @@ +/** + ****************************************************************************** + * @file stm32l476xx.h + * @author MCD Application Team + * @brief CMSIS STM32L476xx Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripherals registers hardware + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32l476xx + * @{ + */ + +#ifndef __STM32L476xx_H +#define __STM32L476xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief Configuration of the Cortex-M4 Processor and Core Peripherals + */ +#define __CM4_REV 0x0001 /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1 /*!< STM32L4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4 /*!< STM32L4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1 /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32L4XX Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Cortex-M4 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M4 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers **********************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_PVM_IRQn = 1, /*!< PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection Interrupts */ + TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1, ADC2 SAR global Interrupts */ + CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */ + CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break interrupt and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM17 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + DFSDM1_FLT3_IRQn = 42, /*!< DFSDM1 Filter 3 global Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FMC_IRQn = 48, /*!< FMC global Interrupt */ + SDMMC1_IRQn = 49, /*!< SDMMC1 global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupt */ + DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ + DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ + DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ + DMA2_Channel4_IRQn = 59, /*!< DMA2 Channel 4 global Interrupt */ + DMA2_Channel5_IRQn = 60, /*!< DMA2 Channel 5 global Interrupt */ + DFSDM1_FLT0_IRQn = 61, /*!< DFSDM1 Filter 0 global Interrupt */ + DFSDM1_FLT1_IRQn = 62, /*!< DFSDM1 Filter 1 global Interrupt */ + DFSDM1_FLT2_IRQn = 63, /*!< DFSDM1 Filter 2 global Interrupt */ + COMP_IRQn = 64, /*!< COMP1 and COMP2 Interrupts */ + LPTIM1_IRQn = 65, /*!< LP TIM1 interrupt */ + LPTIM2_IRQn = 66, /*!< LP TIM2 interrupt */ + OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */ + DMA2_Channel6_IRQn = 68, /*!< DMA2 Channel 6 global interrupt */ + DMA2_Channel7_IRQn = 69, /*!< DMA2 Channel 7 global interrupt */ + LPUART1_IRQn = 70, /*!< LP UART1 interrupt */ + QUADSPI_IRQn = 71, /*!< Quad SPI global interrupt */ + I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */ + I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */ + SAI1_IRQn = 74, /*!< Serial Audio Interface 1 global interrupt */ + SAI2_IRQn = 75, /*!< Serial Audio Interface 2 global interrupt */ + SWPMI1_IRQn = 76, /*!< Serial Wire Interface 1 global interrupt */ + TSC_IRQn = 77, /*!< Touch Sense Controller global interrupt */ + LCD_IRQn = 78, /*!< LCD global interrupt */ + RNG_IRQn = 80, /*!< RNG global interrupt */ + FPU_IRQn = 81 /*!< FPU global interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32l4xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC interrupt and status register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< ADC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< ADC control register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< ADC configuration register 1, Address offset: 0x0C */ + __IO uint32_t CFGR2; /*!< ADC configuration register 2, Address offset: 0x10 */ + __IO uint32_t SMPR1; /*!< ADC sampling time register 1, Address offset: 0x14 */ + __IO uint32_t SMPR2; /*!< ADC sampling time register 2, Address offset: 0x18 */ + uint32_t RESERVED1; /*!< Reserved, 0x1C */ + __IO uint32_t TR1; /*!< ADC analog watchdog 1 threshold register, Address offset: 0x20 */ + __IO uint32_t TR2; /*!< ADC analog watchdog 2 threshold register, Address offset: 0x24 */ + __IO uint32_t TR3; /*!< ADC analog watchdog 3 threshold register, Address offset: 0x28 */ + uint32_t RESERVED2; /*!< Reserved, 0x2C */ + __IO uint32_t SQR1; /*!< ADC group regular sequencer register 1, Address offset: 0x30 */ + __IO uint32_t SQR2; /*!< ADC group regular sequencer register 2, Address offset: 0x34 */ + __IO uint32_t SQR3; /*!< ADC group regular sequencer register 3, Address offset: 0x38 */ + __IO uint32_t SQR4; /*!< ADC group regular sequencer register 4, Address offset: 0x3C */ + __IO uint32_t DR; /*!< ADC group regular data register, Address offset: 0x40 */ + uint32_t RESERVED3; /*!< Reserved, 0x44 */ + uint32_t RESERVED4; /*!< Reserved, 0x48 */ + __IO uint32_t JSQR; /*!< ADC group injected sequencer register, Address offset: 0x4C */ + uint32_t RESERVED5[4]; /*!< Reserved, 0x50 - 0x5C */ + __IO uint32_t OFR1; /*!< ADC offset register 1, Address offset: 0x60 */ + __IO uint32_t OFR2; /*!< ADC offset register 2, Address offset: 0x64 */ + __IO uint32_t OFR3; /*!< ADC offset register 3, Address offset: 0x68 */ + __IO uint32_t OFR4; /*!< ADC offset register 4, Address offset: 0x6C */ + uint32_t RESERVED6[4]; /*!< Reserved, 0x70 - 0x7C */ + __IO uint32_t JDR1; /*!< ADC group injected rank 1 data register, Address offset: 0x80 */ + __IO uint32_t JDR2; /*!< ADC group injected rank 2 data register, Address offset: 0x84 */ + __IO uint32_t JDR3; /*!< ADC group injected rank 3 data register, Address offset: 0x88 */ + __IO uint32_t JDR4; /*!< ADC group injected rank 4 data register, Address offset: 0x8C */ + uint32_t RESERVED7[4]; /*!< Reserved, 0x090 - 0x09C */ + __IO uint32_t AWD2CR; /*!< ADC analog watchdog 1 configuration register, Address offset: 0xA0 */ + __IO uint32_t AWD3CR; /*!< ADC analog watchdog 3 Configuration Register, Address offset: 0xA4 */ + uint32_t RESERVED8; /*!< Reserved, 0x0A8 */ + uint32_t RESERVED9; /*!< Reserved, 0x0AC */ + __IO uint32_t DIFSEL; /*!< ADC differential mode selection register, Address offset: 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC calibration factors, Address offset: 0xB4 */ + +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: ADC1 base address + 0x300 */ + uint32_t RESERVED; /*!< Reserved, Address offset: ADC1 base address + 0x304 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: ADC1 base address + 0x308 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: ADC1 base address + 0x30C */ +} ADC_Common_TypeDef; + + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; /*!< CAN TX mailbox identifier register */ + __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */ + __IO uint32_t TDLR; /*!< CAN mailbox data low register */ + __IO uint32_t TDHR; /*!< CAN mailbox data high register */ +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; /*!< CAN receive FIFO mailbox identifier register */ + __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */ + __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */ + __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */ +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; /*!< CAN Filter bank register 1 */ + __IO uint32_t FR2; /*!< CAN Filter bank register 1 */ +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */ + __IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */ + __IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */ + __IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */ + __IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */ + __IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */ + __IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */ + uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */ + CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */ + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */ + uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */ + __IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */ + __IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */ + uint32_t RESERVED2; /*!< Reserved, 0x208 */ + __IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */ + uint32_t RESERVED3; /*!< Reserved, 0x210 */ + __IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */ + uint32_t RESERVED4; /*!< Reserved, 0x218 */ + __IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */ + uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */ + CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */ +} CAN_TypeDef; + + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, used for bits common to several COMP instances, Address offset: 0x00 */ +} COMP_Common_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED2; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ + __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */ + __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */ + __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */ + __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */ + __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */ + __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */ +} DAC_TypeDef; + +/** + * @brief DFSDM module registers + */ +typedef struct +{ + __IO uint32_t FLTCR1; /*!< DFSDM control register1, Address offset: 0x100 */ + __IO uint32_t FLTCR2; /*!< DFSDM control register2, Address offset: 0x104 */ + __IO uint32_t FLTISR; /*!< DFSDM interrupt and status register, Address offset: 0x108 */ + __IO uint32_t FLTICR; /*!< DFSDM interrupt flag clear register, Address offset: 0x10C */ + __IO uint32_t FLTJCHGR; /*!< DFSDM injected channel group selection register, Address offset: 0x110 */ + __IO uint32_t FLTFCR; /*!< DFSDM filter control register, Address offset: 0x114 */ + __IO uint32_t FLTJDATAR; /*!< DFSDM data register for injected group, Address offset: 0x118 */ + __IO uint32_t FLTRDATAR; /*!< DFSDM data register for regular group, Address offset: 0x11C */ + __IO uint32_t FLTAWHTR; /*!< DFSDM analog watchdog high threshold register, Address offset: 0x120 */ + __IO uint32_t FLTAWLTR; /*!< DFSDM analog watchdog low threshold register, Address offset: 0x124 */ + __IO uint32_t FLTAWSR; /*!< DFSDM analog watchdog status register Address offset: 0x128 */ + __IO uint32_t FLTAWCFR; /*!< DFSDM analog watchdog clear flag register Address offset: 0x12C */ + __IO uint32_t FLTEXMAX; /*!< DFSDM extreme detector maximum register, Address offset: 0x130 */ + __IO uint32_t FLTEXMIN; /*!< DFSDM extreme detector minimum register Address offset: 0x134 */ + __IO uint32_t FLTCNVTIMR; /*!< DFSDM conversion timer, Address offset: 0x138 */ +} DFSDM_Filter_TypeDef; + +/** + * @brief DFSDM channel configuration registers + */ +typedef struct +{ + __IO uint32_t CHCFGR1; /*!< DFSDM channel configuration register1, Address offset: 0x00 */ + __IO uint32_t CHCFGR2; /*!< DFSDM channel configuration register2, Address offset: 0x04 */ + __IO uint32_t CHAWSCDR; /*!< DFSDM channel analog watchdog and + short circuit detector register, Address offset: 0x08 */ + __IO uint32_t CHWDATAR; /*!< DFSDM channel watchdog filter data register, Address offset: 0x0C */ + __IO uint32_t CHDATINR; /*!< DFSDM channel data input register, Address offset: 0x10 */ +} DFSDM_Channel_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */ + __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */ +} DBGMCU_TypeDef; + + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; /*!< DMA channel x configuration register */ + __IO uint32_t CNDTR; /*!< DMA channel x number of data register */ + __IO uint32_t CPAR; /*!< DMA channel x peripheral address register */ + __IO uint32_t CMAR; /*!< DMA channel x memory address register */ +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register, Address offset: 0x00 */ + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register, Address offset: 0x04 */ +} DMA_TypeDef; + +typedef struct +{ + __IO uint32_t CSELR; /*!< DMA channel selection register */ +} DMA_Request_TypeDef; + +/* Legacy define */ +#define DMA_request_TypeDef DMA_Request_TypeDef + + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR1; /*!< EXTI Interrupt mask register 1, Address offset: 0x00 */ + __IO uint32_t EMR1; /*!< EXTI Event mask register 1, Address offset: 0x04 */ + __IO uint32_t RTSR1; /*!< EXTI Rising trigger selection register 1, Address offset: 0x08 */ + __IO uint32_t FTSR1; /*!< EXTI Falling trigger selection register 1, Address offset: 0x0C */ + __IO uint32_t SWIER1; /*!< EXTI Software interrupt event register 1, Address offset: 0x10 */ + __IO uint32_t PR1; /*!< EXTI Pending register 1, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t IMR2; /*!< EXTI Interrupt mask register 2, Address offset: 0x20 */ + __IO uint32_t EMR2; /*!< EXTI Event mask register 2, Address offset: 0x24 */ + __IO uint32_t RTSR2; /*!< EXTI Rising trigger selection register 2, Address offset: 0x28 */ + __IO uint32_t FTSR2; /*!< EXTI Falling trigger selection register 2, Address offset: 0x2C */ + __IO uint32_t SWIER2; /*!< EXTI Software interrupt event register 2, Address offset: 0x30 */ + __IO uint32_t PR2; /*!< EXTI Pending register 2, Address offset: 0x34 */ +} EXTI_TypeDef; + + +/** + * @brief Firewall + */ + +typedef struct +{ + __IO uint32_t CSSA; /*!< Code Segment Start Address register, Address offset: 0x00 */ + __IO uint32_t CSL; /*!< Code Segment Length register, Address offset: 0x04 */ + __IO uint32_t NVDSSA; /*!< NON volatile data Segment Start Address register, Address offset: 0x08 */ + __IO uint32_t NVDSL; /*!< NON volatile data Segment Length register, Address offset: 0x0C */ + __IO uint32_t VDSSA ; /*!< Volatile data Segment Start Address register, Address offset: 0x10 */ + __IO uint32_t VDSL ; /*!< Volatile data Segment Length register, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */ + __IO uint32_t CR ; /*!< Configuration register, Address offset: 0x20 */ +} FIREWALL_TypeDef; + + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t PDKEYR; /*!< FLASH power down key register, Address offset: 0x04 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x08 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x10 */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x14 */ + __IO uint32_t ECCR; /*!< FLASH ECC register, Address offset: 0x18 */ + __IO uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x1C */ + __IO uint32_t OPTR; /*!< FLASH option register, Address offset: 0x20 */ + __IO uint32_t PCROP1SR; /*!< FLASH bank1 PCROP start address register, Address offset: 0x24 */ + __IO uint32_t PCROP1ER; /*!< FLASH bank1 PCROP end address register, Address offset: 0x28 */ + __IO uint32_t WRP1AR; /*!< FLASH bank1 WRP area A address register, Address offset: 0x2C */ + __IO uint32_t WRP1BR; /*!< FLASH bank1 WRP area B address register, Address offset: 0x30 */ + uint32_t RESERVED2[4]; /*!< Reserved2, Address offset: 0x34-0x40 */ + __IO uint32_t PCROP2SR; /*!< FLASH bank2 PCROP start address register, Address offset: 0x44 */ + __IO uint32_t PCROP2ER; /*!< FLASH bank2 PCROP end address register, Address offset: 0x48 */ + __IO uint32_t WRP2AR; /*!< FLASH bank2 WRP area A address register, Address offset: 0x4C */ + __IO uint32_t WRP2BR; /*!< FLASH bank2 WRP area B address register, Address offset: 0x50 */ +} FLASH_TypeDef; + + +/** + * @brief Flexible Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */ +} FMC_Bank1_TypeDef; + +/** + * @brief Flexible Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */ +} FMC_Bank1E_TypeDef; + +/** + * @brief Flexible Memory Controller Bank3 + */ + +typedef struct +{ + __IO uint32_t PCR; /*!< NAND Flash control register, Address offset: 0x80 */ + __IO uint32_t SR; /*!< NAND Flash FIFO status and interrupt register, Address offset: 0x84 */ + __IO uint32_t PMEM; /*!< NAND Flash Common memory space timing register, Address offset: 0x88 */ + __IO uint32_t PATT; /*!< NAND Flash Attribute memory space timing register, Address offset: 0x8C */ + uint32_t RESERVED0; /*!< Reserved, 0x90 */ + __IO uint32_t ECCR; /*!< NAND Flash ECC result registers, Address offset: 0x94 */ +} FMC_Bank3_TypeDef; + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ + __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */ + __IO uint32_t ASCR; /*!< GPIO analog switch control register, Address offset: 0x2C */ + +} GPIO_TypeDef; + + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + +/** + * @brief LCD + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LCD control register, Address offset: 0x00 */ + __IO uint32_t FCR; /*!< LCD frame control register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< LCD status register, Address offset: 0x08 */ + __IO uint32_t CLR; /*!< LCD clear register, Address offset: 0x0C */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD display memory, Address offset: 0x14-0x50 */ +} LCD_TypeDef; + +/** + * @brief LPTIMER + */ +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ + __IO uint32_t OR; /*!< LPTIM Option register, Address offset: 0x20 */ +} LPTIM_TypeDef; + +/** + * @brief Operational Amplifier (OPAMP) + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */ + __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t LPOTR; /*!< OPAMP offset trimming register for low power mode, Address offset: 0x08 */ +} OPAMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, used for bits common to several OPAMP instances, Address offset: 0x00 */ +} OPAMP_Common_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< PWR power control register 3, Address offset: 0x08 */ + __IO uint32_t CR4; /*!< PWR power control register 4, Address offset: 0x0C */ + __IO uint32_t SR1; /*!< PWR power status register 1, Address offset: 0x10 */ + __IO uint32_t SR2; /*!< PWR power status register 2, Address offset: 0x14 */ + __IO uint32_t SCR; /*!< PWR power status reset register, Address offset: 0x18 */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t PUCRA; /*!< Pull_up control register of portA, Address offset: 0x20 */ + __IO uint32_t PDCRA; /*!< Pull_Down control register of portA, Address offset: 0x24 */ + __IO uint32_t PUCRB; /*!< Pull_up control register of portB, Address offset: 0x28 */ + __IO uint32_t PDCRB; /*!< Pull_Down control register of portB, Address offset: 0x2C */ + __IO uint32_t PUCRC; /*!< Pull_up control register of portC, Address offset: 0x30 */ + __IO uint32_t PDCRC; /*!< Pull_Down control register of portC, Address offset: 0x34 */ + __IO uint32_t PUCRD; /*!< Pull_up control register of portD, Address offset: 0x38 */ + __IO uint32_t PDCRD; /*!< Pull_Down control register of portD, Address offset: 0x3C */ + __IO uint32_t PUCRE; /*!< Pull_up control register of portE, Address offset: 0x40 */ + __IO uint32_t PDCRE; /*!< Pull_Down control register of portE, Address offset: 0x44 */ + __IO uint32_t PUCRF; /*!< Pull_up control register of portF, Address offset: 0x48 */ + __IO uint32_t PDCRF; /*!< Pull_Down control register of portF, Address offset: 0x4C */ + __IO uint32_t PUCRG; /*!< Pull_up control register of portG, Address offset: 0x50 */ + __IO uint32_t PDCRG; /*!< Pull_Down control register of portG, Address offset: 0x54 */ + __IO uint32_t PUCRH; /*!< Pull_up control register of portH, Address offset: 0x58 */ + __IO uint32_t PDCRH; /*!< Pull_Down control register of portH, Address offset: 0x5C */ +} PWR_TypeDef; + + +/** + * @brief QUAD Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR; /*!< QUADSPI Control register, Address offset: 0x00 */ + __IO uint32_t DCR; /*!< QUADSPI Device Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< QUADSPI Status register, Address offset: 0x08 */ + __IO uint32_t FCR; /*!< QUADSPI Flag Clear register, Address offset: 0x0C */ + __IO uint32_t DLR; /*!< QUADSPI Data Length register, Address offset: 0x10 */ + __IO uint32_t CCR; /*!< QUADSPI Communication Configuration register, Address offset: 0x14 */ + __IO uint32_t AR; /*!< QUADSPI Address register, Address offset: 0x18 */ + __IO uint32_t ABR; /*!< QUADSPI Alternate Bytes register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< QUADSPI Data register, Address offset: 0x20 */ + __IO uint32_t PSMKR; /*!< QUADSPI Polling Status Mask register, Address offset: 0x24 */ + __IO uint32_t PSMAR; /*!< QUADSPI Polling Status Match register, Address offset: 0x28 */ + __IO uint32_t PIR; /*!< QUADSPI Polling Interval register, Address offset: 0x2C */ + __IO uint32_t LPTR; /*!< QUADSPI Low Power Timeout register, Address offset: 0x30 */ +} QUADSPI_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t ICSCR; /*!< RCC internal clock sources calibration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t PLLCFGR; /*!< RCC system PLL configuration register, Address offset: 0x0C */ + __IO uint32_t PLLSAI1CFGR; /*!< RCC PLL SAI1 configuration register, Address offset: 0x10 */ + __IO uint32_t PLLSAI2CFGR; /*!< RCC PLL SAI2 configuration register, Address offset: 0x14 */ + __IO uint32_t CIER; /*!< RCC clock interrupt enable register, Address offset: 0x18 */ + __IO uint32_t CIFR; /*!< RCC clock interrupt flag register, Address offset: 0x1C */ + __IO uint32_t CICR; /*!< RCC clock interrupt clear register, Address offset: 0x20 */ + uint32_t RESERVED0; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x28 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x2C */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x30 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x34 */ + __IO uint32_t APB1RSTR1; /*!< RCC APB1 peripheral reset register 1, Address offset: 0x38 */ + __IO uint32_t APB1RSTR2; /*!< RCC APB1 peripheral reset register 2, Address offset: 0x3C */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x40 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x44 */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clocks enable register, Address offset: 0x48 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clocks enable register, Address offset: 0x4C */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clocks enable register, Address offset: 0x50 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x54 */ + __IO uint32_t APB1ENR1; /*!< RCC APB1 peripheral clocks enable register 1, Address offset: 0x58 */ + __IO uint32_t APB1ENR2; /*!< RCC APB1 peripheral clocks enable register 2, Address offset: 0x5C */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clocks enable register, Address offset: 0x60 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x64 */ + __IO uint32_t AHB1SMENR; /*!< RCC AHB1 peripheral clocks enable in sleep and stop modes register, Address offset: 0x68 */ + __IO uint32_t AHB2SMENR; /*!< RCC AHB2 peripheral clocks enable in sleep and stop modes register, Address offset: 0x6C */ + __IO uint32_t AHB3SMENR; /*!< RCC AHB3 peripheral clocks enable in sleep and stop modes register, Address offset: 0x70 */ + uint32_t RESERVED5; /*!< Reserved, Address offset: 0x74 */ + __IO uint32_t APB1SMENR1; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 1, Address offset: 0x78 */ + __IO uint32_t APB1SMENR2; /*!< RCC APB1 peripheral clocks enable in sleep mode and stop modes register 2, Address offset: 0x7C */ + __IO uint32_t APB2SMENR; /*!< RCC APB2 peripheral clocks enable in sleep mode and stop modes register, Address offset: 0x80 */ + uint32_t RESERVED6; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED7; /*!< Reserved, Address offset: 0x8C */ + __IO uint32_t BDCR; /*!< RCC backup domain control register, Address offset: 0x90 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x94 */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + uint32_t reserved; /*!< Reserved */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAMPCR; /*!< RTC tamper configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + __IO uint32_t OR; /*!< RTC option register, Address offset: 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + + +/** + * @brief Secure digital input/output Interface + */ + +typedef struct +{ + __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */ + __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */ + __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */ + __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */ + __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */ + __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */ + __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */ + __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */ + __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */ + __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */ + __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */ + __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */ + __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */ + __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */ + __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */ + __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */ + uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ + __I uint32_t FIFOCNT; /*!< SDMMC FIFO counter register, Address offset: 0x48 */ + uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ + __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */ +} SDMMC_TypeDef; + + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI Control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI Status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register, Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI Rx CRC register, Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI Tx CRC register, Address offset: 0x18 */ +} SPI_TypeDef; + + +/** + * @brief Single Wire Protocol Master Interface SPWMI + */ + +typedef struct +{ + __IO uint32_t CR; /*!< SWPMI Configuration/Control register, Address offset: 0x00 */ + __IO uint32_t BRR; /*!< SWPMI bitrate register, Address offset: 0x04 */ + uint32_t RESERVED1; /*!< Reserved, 0x08 */ + __IO uint32_t ISR; /*!< SWPMI Interrupt and Status register, Address offset: 0x0C */ + __IO uint32_t ICR; /*!< SWPMI Interrupt Flag Clear register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< SWPMI Interrupt Enable register, Address offset: 0x14 */ + __IO uint32_t RFL; /*!< SWPMI Receive Frame Length register, Address offset: 0x18 */ + __IO uint32_t TDR; /*!< SWPMI Transmit data register, Address offset: 0x1C */ + __IO uint32_t RDR; /*!< SWPMI Receive data register, Address offset: 0x20 */ + __IO uint32_t OR; /*!< SWPMI Option register, Address offset: 0x24 */ +} SWPMI_TypeDef; + + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t CFGR1; /*!< SYSCFG configuration register 1, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + __IO uint32_t SCSR; /*!< SYSCFG SRAM2 control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG SRAM2 write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG SRAM2 key register, Address offset: 0x24 */ +} SYSCFG_TypeDef; + + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR1; /*!< TIM option register 1, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register6, Address offset: 0x5C */ + __IO uint32_t OR2; /*!< TIM option register 2, Address offset: 0x60 */ + __IO uint32_t OR3; /*!< TIM option register 3, Address offset: 0x64 */ +} TIM_TypeDef; + + +/** + * @brief Touch Sensing Controller (TSC) + */ + +typedef struct +{ + __IO uint32_t CR; /*!< TSC control register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< TSC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t ICR; /*!< TSC interrupt clear register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< TSC interrupt status register, Address offset: 0x0C */ + __IO uint32_t IOHCR; /*!< TSC I/O hysteresis control register, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t IOASCR; /*!< TSC I/O analog switch control register, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t IOSCR; /*!< TSC I/O sampling control register, Address offset: 0x20 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t IOCCR; /*!< TSC I/O channel control register, Address offset: 0x28 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x2C */ + __IO uint32_t IOGCSR; /*!< TSC I/O group control status register, Address offset: 0x30 */ + __IO uint32_t IOGXCR[8]; /*!< TSC I/O group x counter register, Address offset: 0x34-50 */ +} TSC_TypeDef; + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint16_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + uint16_t RESERVED2; /*!< Reserved, 0x12 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint16_t RQR; /*!< USART Request register, Address offset: 0x18 */ + uint16_t RESERVED3; /*!< Reserved, 0x1A */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint16_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + uint16_t RESERVED4; /*!< Reserved, 0x26 */ + __IO uint16_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + uint16_t RESERVED5; /*!< Reserved, 0x2A */ +} USART_TypeDef; + +/** + * @brief VREFBUF + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< VREFBUF control and status register, Address offset: 0x00 */ + __IO uint32_t CCR; /*!< VREFBUF calibration and control register, Address offset: 0x04 */ +} VREFBUF_TypeDef; + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + +/** + * @brief RNG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @brief USB_OTG_Core_register + */ +typedef struct +{ + __IO uint32_t GOTGCTL; /*!< USB_OTG Control and Status Register 000h*/ + __IO uint32_t GOTGINT; /*!< USB_OTG Interrupt Register 004h*/ + __IO uint32_t GAHBCFG; /*!< Core AHB Configuration Register 008h*/ + __IO uint32_t GUSBCFG; /*!< Core USB Configuration Register 00Ch*/ + __IO uint32_t GRSTCTL; /*!< Core Reset Register 010h*/ + __IO uint32_t GINTSTS; /*!< Core Interrupt Register 014h*/ + __IO uint32_t GINTMSK; /*!< Core Interrupt Mask Register 018h*/ + __IO uint32_t GRXSTSR; /*!< Receive Sts Q Read Register 01Ch*/ + __IO uint32_t GRXSTSP; /*!< Receive Sts Q Read & POP Register 020h*/ + __IO uint32_t GRXFSIZ; /*!< Receive FIFO Size Register 024h*/ + __IO uint32_t DIEPTXF0_HNPTXFSIZ; /*!< EP0 / Non Periodic Tx FIFO Size Register 028h*/ + __IO uint32_t HNPTXSTS; /*!< Non Periodic Tx FIFO/Queue Sts reg 02Ch*/ + uint32_t Reserved30[2]; /*!< Reserved 030h*/ + __IO uint32_t GCCFG; /*!< General Purpose IO Register 038h*/ + __IO uint32_t CID; /*!< User ID Register 03Ch*/ + __IO uint32_t GSNPSID; /*!< USB_OTG core ID 040h*/ + __IO uint32_t GHWCFG1; /*!< User HW config1 044h*/ + __IO uint32_t GHWCFG2; /*!< User HW config2 048h*/ + __IO uint32_t GHWCFG3; /*!< User HW config3 04Ch*/ + uint32_t Reserved6; /*!< Reserved 050h*/ + __IO uint32_t GLPMCFG; /*!< LPM Register 054h*/ + __IO uint32_t GPWRDN; /*!< Power Down Register 058h*/ + __IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch*/ + __IO uint32_t GADPCTL; /*!< ADP Timer, Control and Status Register 060h*/ + uint32_t Reserved43[39]; /*!< Reserved 064h-0FFh*/ + __IO uint32_t HPTXFSIZ; /*!< Host Periodic Tx FIFO Size Reg 100h*/ + __IO uint32_t DIEPTXF[0x0F]; /*!< dev Periodic Transmit FIFO */ +} USB_OTG_GlobalTypeDef; + +/** + * @brief USB_OTG_device_Registers + */ +typedef struct +{ + __IO uint32_t DCFG; /* dev Configuration Register 800h*/ + __IO uint32_t DCTL; /* dev Control Register 804h*/ + __IO uint32_t DSTS; /* dev Status Register (RO) 808h*/ + uint32_t Reserved0C; /* Reserved 80Ch*/ + __IO uint32_t DIEPMSK; /* dev IN Endpoint Mask 810h*/ + __IO uint32_t DOEPMSK; /* dev OUT Endpoint Mask 814h*/ + __IO uint32_t DAINT; /* dev All Endpoints Itr Reg 818h*/ + __IO uint32_t DAINTMSK; /* dev All Endpoints Itr Mask 81Ch*/ + uint32_t Reserved20; /* Reserved 820h*/ + uint32_t Reserved24; /* Reserved 824h*/ + __IO uint32_t DVBUSDIS; /* dev VBUS discharge Register 828h*/ + __IO uint32_t DVBUSPULSE; /* dev VBUS Pulse Register 82Ch*/ + __IO uint32_t DTHRCTL; /* dev thr 830h*/ + __IO uint32_t DIEPEMPMSK; /* dev empty msk 834h*/ + __IO uint32_t DEACHINT; /* dedicated EP interrupt 838h*/ + __IO uint32_t DEACHMSK; /* dedicated EP msk 83Ch*/ + uint32_t Reserved40; /* Reserved 840h*/ + __IO uint32_t DINEP1MSK; /* dedicated EP mask 844h*/ + uint32_t Reserved44[15]; /* Reserved 848-880h*/ + __IO uint32_t DOUTEP1MSK; /* dedicated EP msk 884h*/ +} USB_OTG_DeviceTypeDef; + +/** + * @brief USB_OTG_IN_Endpoint-Specific_Register + */ +typedef struct +{ + __IO uint32_t DIEPCTL; /* dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h*/ + uint32_t Reserved04; /* Reserved 900h + (ep_num * 20h) + 04h*/ + __IO uint32_t DIEPINT; /* dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h*/ + uint32_t Reserved0C; /* Reserved 900h + (ep_num * 20h) + 0Ch*/ + __IO uint32_t DIEPTSIZ; /* IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h*/ + __IO uint32_t DIEPDMA; /* IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h*/ + __IO uint32_t DTXFSTS; /*IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h*/ + uint32_t Reserved18; /* Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch*/ +} USB_OTG_INEndpointTypeDef; + +/** + * @brief USB_OTG_OUT_Endpoint-Specific_Registers + */ +typedef struct +{ + __IO uint32_t DOEPCTL; /* dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h*/ + uint32_t Reserved04; /* Reserved B00h + (ep_num * 20h) + 04h*/ + __IO uint32_t DOEPINT; /* dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h*/ + uint32_t Reserved0C; /* Reserved B00h + (ep_num * 20h) + 0Ch*/ + __IO uint32_t DOEPTSIZ; /* dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h*/ + __IO uint32_t DOEPDMA; /* dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h*/ + uint32_t Reserved18[2]; /* Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch*/ +} USB_OTG_OUTEndpointTypeDef; + +/** + * @brief USB_OTG_Host_Mode_Register_Structures + */ +typedef struct +{ + __IO uint32_t HCFG; /* Host Configuration Register 400h*/ + __IO uint32_t HFIR; /* Host Frame Interval Register 404h*/ + __IO uint32_t HFNUM; /* Host Frame Nbr/Frame Remaining 408h*/ + uint32_t Reserved40C; /* Reserved 40Ch*/ + __IO uint32_t HPTXSTS; /* Host Periodic Tx FIFO/ Queue Status 410h*/ + __IO uint32_t HAINT; /* Host All Channels Interrupt Register 414h*/ + __IO uint32_t HAINTMSK; /* Host All Channels Interrupt Mask 418h*/ +} USB_OTG_HostTypeDef; + +/** + * @brief USB_OTG_Host_Channel_Specific_Registers + */ +typedef struct +{ + __IO uint32_t HCCHAR; + __IO uint32_t HCSPLT; + __IO uint32_t HCINT; + __IO uint32_t HCINTMSK; + __IO uint32_t HCTSIZ; + __IO uint32_t HCDMA; + uint32_t Reserved[2]; +} USB_OTG_HostChannelTypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH(up to 1 MB) base address */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 96 KB) base address */ +#define SRAM2_BASE (0x10000000UL) /*!< SRAM2(32 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define FMC_BASE (0x60000000UL) /*!< FMC base address */ +#define QSPI_BASE (0x90000000UL) /*!< QUADSPI memories accessible over AHB base address */ + +#define FMC_R_BASE (0xA0000000UL) /*!< FMC control registers base address */ +#define QSPI_R_BASE (0xA0001000UL) /*!< QUADSPI control registers base address */ +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(96 KB) base address in the bit-band region */ +#define PERIPH_BB_BASE (0x42000000UL) /*!< Peripheral base address in the bit-band region */ + +/* Legacy defines */ +#define SRAM_BASE SRAM1_BASE +#define SRAM_BB_BASE SRAM1_BB_BASE + +#define SRAM1_SIZE_MAX (0x00018000UL) /*!< maximum SRAM1 size (up to 96 KBytes) */ +#define SRAM2_SIZE (0x00008000UL) /*!< SRAM2 size (32 KBytes) */ + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x08000000UL) + +#define FMC_BANK1 FMC_BASE +#define FMC_BANK1_1 FMC_BANK1 +#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) +#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL) +#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL) +#define FMC_BANK3 (FMC_BASE + 0x20000000UL) + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define LCD_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x5C00UL) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400UL) +#define DAC1_BASE (APB1PERIPH_BASE + 0x7400UL) +#define OPAMP_BASE (APB1PERIPH_BASE + 0x7800UL) +#define OPAMP1_BASE (APB1PERIPH_BASE + 0x7800UL) +#define OPAMP2_BASE (APB1PERIPH_BASE + 0x7810UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define SWPMI1_BASE (APB1PERIPH_BASE + 0x8800UL) +#define LPTIM2_BASE (APB1PERIPH_BASE + 0x9400UL) + + +/*!< APB2 peripherals */ +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x0000UL) +#define VREFBUF_BASE (APB2PERIPH_BASE + 0x0030UL) +#define COMP1_BASE (APB2PERIPH_BASE + 0x0200UL) +#define COMP2_BASE (APB2PERIPH_BASE + 0x0204UL) +#define EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define FIREWALL_BASE (APB2PERIPH_BASE + 0x1C00UL) +#define SDMMC1_BASE (APB2PERIPH_BASE + 0x2800UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x3400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x3800UL) +#define TIM15_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM16_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM17_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x0004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x0024UL) +#define SAI2_BASE (APB2PERIPH_BASE + 0x5800UL) +#define SAI2_Block_A_BASE (SAI2_BASE + 0x0004UL) +#define SAI2_Block_B_BASE (SAI2_BASE + 0x0024UL) +#define DFSDM1_BASE (APB2PERIPH_BASE + 0x6000UL) +#define DFSDM1_Channel0_BASE (DFSDM1_BASE + 0x0000UL) +#define DFSDM1_Channel1_BASE (DFSDM1_BASE + 0x0020UL) +#define DFSDM1_Channel2_BASE (DFSDM1_BASE + 0x0040UL) +#define DFSDM1_Channel3_BASE (DFSDM1_BASE + 0x0060UL) +#define DFSDM1_Channel4_BASE (DFSDM1_BASE + 0x0080UL) +#define DFSDM1_Channel5_BASE (DFSDM1_BASE + 0x00A0UL) +#define DFSDM1_Channel6_BASE (DFSDM1_BASE + 0x00C0UL) +#define DFSDM1_Channel7_BASE (DFSDM1_BASE + 0x00E0UL) +#define DFSDM1_Filter0_BASE (DFSDM1_BASE + 0x0100UL) +#define DFSDM1_Filter1_BASE (DFSDM1_BASE + 0x0180UL) +#define DFSDM1_Filter2_BASE (DFSDM1_BASE + 0x0200UL) +#define DFSDM1_Filter3_BASE (DFSDM1_BASE + 0x0280UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) +#define TSC_BASE (AHB1PERIPH_BASE + 0x4000UL) + + +#define DMA1_Channel1_BASE (DMA1_BASE + 0x0008UL) +#define DMA1_Channel2_BASE (DMA1_BASE + 0x001CUL) +#define DMA1_Channel3_BASE (DMA1_BASE + 0x0030UL) +#define DMA1_Channel4_BASE (DMA1_BASE + 0x0044UL) +#define DMA1_Channel5_BASE (DMA1_BASE + 0x0058UL) +#define DMA1_Channel6_BASE (DMA1_BASE + 0x006CUL) +#define DMA1_Channel7_BASE (DMA1_BASE + 0x0080UL) +#define DMA1_CSELR_BASE (DMA1_BASE + 0x00A8UL) + + +#define DMA2_Channel1_BASE (DMA2_BASE + 0x0008UL) +#define DMA2_Channel2_BASE (DMA2_BASE + 0x001CUL) +#define DMA2_Channel3_BASE (DMA2_BASE + 0x0030UL) +#define DMA2_Channel4_BASE (DMA2_BASE + 0x0044UL) +#define DMA2_Channel5_BASE (DMA2_BASE + 0x0058UL) +#define DMA2_Channel6_BASE (DMA2_BASE + 0x006CUL) +#define DMA2_Channel7_BASE (DMA2_BASE + 0x0080UL) +#define DMA2_CSELR_BASE (DMA2_BASE + 0x00A8UL) + + +/*!< AHB2 peripherals */ +#define GPIOA_BASE (AHB2PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB2PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB2PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB2PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB2PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB2PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB2PERIPH_BASE + 0x1800UL) +#define GPIOH_BASE (AHB2PERIPH_BASE + 0x1C00UL) + +#define USBOTG_BASE (AHB2PERIPH_BASE + 0x08000000UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08040000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08040100UL) +#define ADC3_BASE (AHB2PERIPH_BASE + 0x08040200UL) +#define ADC123_COMMON_BASE (AHB2PERIPH_BASE + 0x08040300UL) + + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) + + +/*!< FMC Banks registers base address */ +#define FMC_Bank1_R_BASE (FMC_R_BASE + 0x0000UL) +#define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL) +#define FMC_Bank3_R_BASE (FMC_R_BASE + 0x0080UL) + +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +/*!< USB registers base address */ +#define USB_OTG_FS_PERIPH_BASE (0x50000000UL) + +#define USB_OTG_GLOBAL_BASE (0x00000000UL) +#define USB_OTG_DEVICE_BASE (0x00000800UL) +#define USB_OTG_IN_ENDPOINT_BASE (0x00000900UL) +#define USB_OTG_OUT_ENDPOINT_BASE (0x00000B00UL) +#define USB_OTG_EP_REG_SIZE (0x00000020UL) +#define USB_OTG_HOST_BASE (0x00000400UL) +#define USB_OTG_HOST_PORT_BASE (0x00000440UL) +#define USB_OTG_HOST_CHANNEL_BASE (0x00000500UL) +#define USB_OTG_HOST_CHANNEL_SIZE (0x00000020UL) +#define USB_OTG_PCGCCTL_BASE (0x00000E00UL) +#define USB_OTG_FIFO_BASE (0x00001000UL) +#define USB_OTG_FIFO_SIZE (0x00001000UL) + + +#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */ +#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE (0x1FFF75E0UL) /*!< Flash size data register base address */ +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define LCD ((LCD_TypeDef *) LCD_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define CAN ((CAN_TypeDef *) CAN1_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC1_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP12_COMMON ((OPAMP_Common_TypeDef *) OPAMP1_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define SWPMI1 ((SWPMI_TypeDef *) SWPMI1_BASE) +#define LPTIM2 ((LPTIM_TypeDef *) LPTIM2_BASE) + +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define VREFBUF ((VREFBUF_TypeDef *) VREFBUF_BASE) +#define COMP1 ((COMP_TypeDef *) COMP1_BASE) +#define COMP2 ((COMP_TypeDef *) COMP2_BASE) +#define COMP12_COMMON ((COMP_Common_TypeDef *) COMP2_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define FIREWALL ((FIREWALL_TypeDef *) FIREWALL_BASE) +#define SDMMC1 ((SDMMC_TypeDef *) SDMMC1_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define TIM15 ((TIM_TypeDef *) TIM15_BASE) +#define TIM16 ((TIM_TypeDef *) TIM16_BASE) +#define TIM17 ((TIM_TypeDef *) TIM17_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define SAI2 ((SAI_TypeDef *) SAI2_BASE) +#define SAI2_Block_A ((SAI_Block_TypeDef *)SAI2_Block_A_BASE) +#define SAI2_Block_B ((SAI_Block_TypeDef *)SAI2_Block_B_BASE) +#define DFSDM1_Channel0 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel0_BASE) +#define DFSDM1_Channel1 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel1_BASE) +#define DFSDM1_Channel2 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel2_BASE) +#define DFSDM1_Channel3 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel3_BASE) +#define DFSDM1_Channel4 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel4_BASE) +#define DFSDM1_Channel5 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel5_BASE) +#define DFSDM1_Channel6 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel6_BASE) +#define DFSDM1_Channel7 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel7_BASE) +#define DFSDM1_Filter0 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter0_BASE) +#define DFSDM1_Filter1 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter1_BASE) +#define DFSDM1_Filter2 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter2_BASE) +#define DFSDM1_Filter3 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter3_BASE) +/* Aliases to keep compatibility after DFSDM renaming */ +#define DFSDM_Channel0 DFSDM1_Channel0 +#define DFSDM_Channel1 DFSDM1_Channel1 +#define DFSDM_Channel2 DFSDM1_Channel2 +#define DFSDM_Channel3 DFSDM1_Channel3 +#define DFSDM_Channel4 DFSDM1_Channel4 +#define DFSDM_Channel5 DFSDM1_Channel5 +#define DFSDM_Channel6 DFSDM1_Channel6 +#define DFSDM_Channel7 DFSDM1_Channel7 +#define DFSDM_Filter0 DFSDM1_Filter0 +#define DFSDM_Filter1 DFSDM1_Filter1 +#define DFSDM_Filter2 DFSDM1_Filter2 +#define DFSDM_Filter3 DFSDM1_Filter3 +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define TSC ((TSC_TypeDef *) TSC_BASE) + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define ADC123_COMMON ((ADC_Common_TypeDef *) ADC123_COMMON_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) + + +#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *) DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *) DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA1_CSELR ((DMA_Request_TypeDef *) DMA1_CSELR_BASE) + + +#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE) +#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE) +#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE) +#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE) +#define DMA2_Channel5 ((DMA_Channel_TypeDef *) DMA2_Channel5_BASE) +#define DMA2_Channel6 ((DMA_Channel_TypeDef *) DMA2_Channel6_BASE) +#define DMA2_Channel7 ((DMA_Channel_TypeDef *) DMA2_Channel7_BASE) +#define DMA2_CSELR ((DMA_Request_TypeDef *) DMA2_CSELR_BASE) + + +#define FMC_Bank1_R ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE) +#define FMC_Bank1E_R ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE) +#define FMC_Bank3_R ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE) + +#define QUADSPI ((QUADSPI_TypeDef *) QSPI_R_BASE) + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +#define USB_OTG_FS ((USB_OTG_GlobalTypeDef *) USB_OTG_FS_PERIPH_BASE) +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32L4 serie) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_ISR register *******************/ +#define ADC_ISR_ADRDY_Pos (0U) +#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */ +#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */ +#define ADC_ISR_EOSMP_Pos (1U) +#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */ +#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */ +#define ADC_ISR_EOC_Pos (2U) +#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */ +#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */ +#define ADC_ISR_EOS_Pos (3U) +#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */ +#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_ISR_OVR_Pos (4U) +#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */ +#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */ +#define ADC_ISR_JEOC_Pos (5U) +#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */ +#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */ +#define ADC_ISR_JEOS_Pos (6U) +#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */ +#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_ISR_AWD1_Pos (7U) +#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */ +#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_ISR_AWD2_Pos (8U) +#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */ +#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */ +#define ADC_ISR_AWD3_Pos (9U) +#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */ +#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */ +#define ADC_ISR_JQOVF_Pos (10U) +#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */ +#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_IER register *******************/ +#define ADC_IER_ADRDYIE_Pos (0U) +#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */ +#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */ +#define ADC_IER_EOSMPIE_Pos (1U) +#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */ +#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */ +#define ADC_IER_EOCIE_Pos (2U) +#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */ +#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */ +#define ADC_IER_EOSIE_Pos (3U) +#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */ +#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_IER_OVRIE_Pos (4U) +#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */ +#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */ +#define ADC_IER_JEOCIE_Pos (5U) +#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */ +#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */ +#define ADC_IER_JEOSIE_Pos (6U) +#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */ +#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_IER_AWD1IE_Pos (7U) +#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */ +#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_IER_AWD2IE_Pos (8U) +#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */ +#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */ +#define ADC_IER_AWD3IE_Pos (9U) +#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */ +#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */ +#define ADC_IER_JQOVFIE_Pos (10U) +#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */ +#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */ + +/* Legacy defines */ +#define ADC_IER_ADRDY (ADC_IER_ADRDYIE) +#define ADC_IER_EOSMP (ADC_IER_EOSMPIE) +#define ADC_IER_EOC (ADC_IER_EOCIE) +#define ADC_IER_EOS (ADC_IER_EOSIE) +#define ADC_IER_OVR (ADC_IER_OVRIE) +#define ADC_IER_JEOC (ADC_IER_JEOCIE) +#define ADC_IER_JEOS (ADC_IER_JEOSIE) +#define ADC_IER_AWD1 (ADC_IER_AWD1IE) +#define ADC_IER_AWD2 (ADC_IER_AWD2IE) +#define ADC_IER_AWD3 (ADC_IER_AWD3IE) +#define ADC_IER_JQOVF (ADC_IER_JQOVFIE) + +/******************** Bit definition for ADC_CR register ********************/ +#define ADC_CR_ADEN_Pos (0U) +#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */ +#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */ +#define ADC_CR_ADDIS_Pos (1U) +#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */ +#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */ +#define ADC_CR_ADSTART_Pos (2U) +#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */ +#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR_JADSTART_Pos (3U) +#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */ +#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR_ADSTP_Pos (4U) +#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */ +#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */ +#define ADC_CR_JADSTP_Pos (5U) +#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */ +#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */ +#define ADC_CR_ADVREGEN_Pos (28U) +#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */ +#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */ +#define ADC_CR_DEEPPWD_Pos (29U) +#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */ +#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */ +#define ADC_CR_ADCALDIF_Pos (30U) +#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */ +#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */ +#define ADC_CR_ADCAL_Pos (31U) +#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */ +#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */ + +/******************** Bit definition for ADC_CFGR register ******************/ +#define ADC_CFGR_DMAEN_Pos (0U) +#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */ +#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */ +#define ADC_CFGR_DMACFG_Pos (1U) +#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */ +#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */ + +#define ADC_CFGR_RES_Pos (3U) +#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */ +#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */ +#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */ +#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR_ALIGN_Pos (5U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignement */ + +#define ADC_CFGR_EXTSEL_Pos (6U) +#define ADC_CFGR_EXTSEL_Msk (0xFUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003C0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */ + +#define ADC_CFGR_EXTEN_Pos (10U) +#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */ +#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */ +#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */ +#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */ + +#define ADC_CFGR_OVRMOD_Pos (12U) +#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */ +#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */ +#define ADC_CFGR_CONT_Pos (13U) +#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */ +#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CFGR_AUTDLY_Pos (14U) +#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */ +#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */ + +#define ADC_CFGR_DISCEN_Pos (16U) +#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */ +#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ + +#define ADC_CFGR_DISCNUM_Pos (17U) +#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */ +#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */ +#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */ +#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */ + +#define ADC_CFGR_JDISCEN_Pos (20U) +#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */ +#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ +#define ADC_CFGR_JQM_Pos (21U) +#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */ +#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */ +#define ADC_CFGR_AWD1SGL_Pos (22U) +#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */ +#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CFGR_AWD1EN_Pos (23U) +#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */ +#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ +#define ADC_CFGR_JAWD1EN_Pos (24U) +#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */ +#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CFGR_JAUTO_Pos (25U) +#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */ +#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ + +#define ADC_CFGR_AWD1CH_Pos (26U) +#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */ +#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */ +#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */ +#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */ +#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */ +#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */ + +#define ADC_CFGR_JQDIS_Pos (31U) +#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */ +#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */ + +/******************** Bit definition for ADC_CFGR2 register *****************/ +#define ADC_CFGR2_ROVSE_Pos (0U) +#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */ +#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */ +#define ADC_CFGR2_JOVSE_Pos (1U) +#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */ +#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */ + +#define ADC_CFGR2_OVSR_Pos (2U) +#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */ +#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */ +#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */ +#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */ +#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */ + +#define ADC_CFGR2_OVSS_Pos (5U) +#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */ +#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */ +#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */ +#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */ +#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */ +#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */ + +#define ADC_CFGR2_TROVS_Pos (9U) +#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */ +#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */ +#define ADC_CFGR2_ROVSM_Pos (10U) +#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */ +#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */ + +/******************** Bit definition for ADC_SMPR1 register *****************/ +#define ADC_SMPR1_SMP0_Pos (0U) +#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP1_Pos (3U) +#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP2_Pos (6U) +#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP3_Pos (9U) +#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP4_Pos (12U) +#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP5_Pos (15U) +#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP6_Pos (18U) +#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP7_Pos (21U) +#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR1_SMP8_Pos (24U) +#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR1_SMP9_Pos (27U) +#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */ + +/******************** Bit definition for ADC_SMPR2 register *****************/ +#define ADC_SMPR2_SMP10_Pos (0U) +#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP11_Pos (3U) +#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP12_Pos (6U) +#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP13_Pos (9U) +#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP14_Pos (12U) +#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP15_Pos (15U) +#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP16_Pos (18U) +#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP17_Pos (21U) +#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP18_Pos (24U) +#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */ +#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */ + +/******************** Bit definition for ADC_TR1 register *******************/ +#define ADC_TR1_LT1_Pos (0U) +#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */ +#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */ +#define ADC_TR1_LT1_0 (0x001UL << ADC_TR1_LT1_Pos) /*!< 0x00000001 */ +#define ADC_TR1_LT1_1 (0x002UL << ADC_TR1_LT1_Pos) /*!< 0x00000002 */ +#define ADC_TR1_LT1_2 (0x004UL << ADC_TR1_LT1_Pos) /*!< 0x00000004 */ +#define ADC_TR1_LT1_3 (0x008UL << ADC_TR1_LT1_Pos) /*!< 0x00000008 */ +#define ADC_TR1_LT1_4 (0x010UL << ADC_TR1_LT1_Pos) /*!< 0x00000010 */ +#define ADC_TR1_LT1_5 (0x020UL << ADC_TR1_LT1_Pos) /*!< 0x00000020 */ +#define ADC_TR1_LT1_6 (0x040UL << ADC_TR1_LT1_Pos) /*!< 0x00000040 */ +#define ADC_TR1_LT1_7 (0x080UL << ADC_TR1_LT1_Pos) /*!< 0x00000080 */ +#define ADC_TR1_LT1_8 (0x100UL << ADC_TR1_LT1_Pos) /*!< 0x00000100 */ +#define ADC_TR1_LT1_9 (0x200UL << ADC_TR1_LT1_Pos) /*!< 0x00000200 */ +#define ADC_TR1_LT1_10 (0x400UL << ADC_TR1_LT1_Pos) /*!< 0x00000400 */ +#define ADC_TR1_LT1_11 (0x800UL << ADC_TR1_LT1_Pos) /*!< 0x00000800 */ + +#define ADC_TR1_HT1_Pos (16U) +#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */ +#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC Analog watchdog 1 threshold high */ +#define ADC_TR1_HT1_0 (0x001UL << ADC_TR1_HT1_Pos) /*!< 0x00010000 */ +#define ADC_TR1_HT1_1 (0x002UL << ADC_TR1_HT1_Pos) /*!< 0x00020000 */ +#define ADC_TR1_HT1_2 (0x004UL << ADC_TR1_HT1_Pos) /*!< 0x00040000 */ +#define ADC_TR1_HT1_3 (0x008UL << ADC_TR1_HT1_Pos) /*!< 0x00080000 */ +#define ADC_TR1_HT1_4 (0x010UL << ADC_TR1_HT1_Pos) /*!< 0x00100000 */ +#define ADC_TR1_HT1_5 (0x020UL << ADC_TR1_HT1_Pos) /*!< 0x00200000 */ +#define ADC_TR1_HT1_6 (0x040UL << ADC_TR1_HT1_Pos) /*!< 0x00400000 */ +#define ADC_TR1_HT1_7 (0x080UL << ADC_TR1_HT1_Pos) /*!< 0x00800000 */ +#define ADC_TR1_HT1_8 (0x100UL << ADC_TR1_HT1_Pos) /*!< 0x01000000 */ +#define ADC_TR1_HT1_9 (0x200UL << ADC_TR1_HT1_Pos) /*!< 0x02000000 */ +#define ADC_TR1_HT1_10 (0x400UL << ADC_TR1_HT1_Pos) /*!< 0x04000000 */ +#define ADC_TR1_HT1_11 (0x800UL << ADC_TR1_HT1_Pos) /*!< 0x08000000 */ + +/******************** Bit definition for ADC_TR2 register *******************/ +#define ADC_TR2_LT2_Pos (0U) +#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */ +#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */ +#define ADC_TR2_LT2_0 (0x01UL << ADC_TR2_LT2_Pos) /*!< 0x00000001 */ +#define ADC_TR2_LT2_1 (0x02UL << ADC_TR2_LT2_Pos) /*!< 0x00000002 */ +#define ADC_TR2_LT2_2 (0x04UL << ADC_TR2_LT2_Pos) /*!< 0x00000004 */ +#define ADC_TR2_LT2_3 (0x08UL << ADC_TR2_LT2_Pos) /*!< 0x00000008 */ +#define ADC_TR2_LT2_4 (0x10UL << ADC_TR2_LT2_Pos) /*!< 0x00000010 */ +#define ADC_TR2_LT2_5 (0x20UL << ADC_TR2_LT2_Pos) /*!< 0x00000020 */ +#define ADC_TR2_LT2_6 (0x40UL << ADC_TR2_LT2_Pos) /*!< 0x00000040 */ +#define ADC_TR2_LT2_7 (0x80UL << ADC_TR2_LT2_Pos) /*!< 0x00000080 */ + +#define ADC_TR2_HT2_Pos (16U) +#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */ +#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */ +#define ADC_TR2_HT2_0 (0x01UL << ADC_TR2_HT2_Pos) /*!< 0x00010000 */ +#define ADC_TR2_HT2_1 (0x02UL << ADC_TR2_HT2_Pos) /*!< 0x00020000 */ +#define ADC_TR2_HT2_2 (0x04UL << ADC_TR2_HT2_Pos) /*!< 0x00040000 */ +#define ADC_TR2_HT2_3 (0x08UL << ADC_TR2_HT2_Pos) /*!< 0x00080000 */ +#define ADC_TR2_HT2_4 (0x10UL << ADC_TR2_HT2_Pos) /*!< 0x00100000 */ +#define ADC_TR2_HT2_5 (0x20UL << ADC_TR2_HT2_Pos) /*!< 0x00200000 */ +#define ADC_TR2_HT2_6 (0x40UL << ADC_TR2_HT2_Pos) /*!< 0x00400000 */ +#define ADC_TR2_HT2_7 (0x80UL << ADC_TR2_HT2_Pos) /*!< 0x00800000 */ + +/******************** Bit definition for ADC_TR3 register *******************/ +#define ADC_TR3_LT3_Pos (0U) +#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */ +#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */ +#define ADC_TR3_LT3_0 (0x01UL << ADC_TR3_LT3_Pos) /*!< 0x00000001 */ +#define ADC_TR3_LT3_1 (0x02UL << ADC_TR3_LT3_Pos) /*!< 0x00000002 */ +#define ADC_TR3_LT3_2 (0x04UL << ADC_TR3_LT3_Pos) /*!< 0x00000004 */ +#define ADC_TR3_LT3_3 (0x08UL << ADC_TR3_LT3_Pos) /*!< 0x00000008 */ +#define ADC_TR3_LT3_4 (0x10UL << ADC_TR3_LT3_Pos) /*!< 0x00000010 */ +#define ADC_TR3_LT3_5 (0x20UL << ADC_TR3_LT3_Pos) /*!< 0x00000020 */ +#define ADC_TR3_LT3_6 (0x40UL << ADC_TR3_LT3_Pos) /*!< 0x00000040 */ +#define ADC_TR3_LT3_7 (0x80UL << ADC_TR3_LT3_Pos) /*!< 0x00000080 */ + +#define ADC_TR3_HT3_Pos (16U) +#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */ +#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */ +#define ADC_TR3_HT3_0 (0x01UL << ADC_TR3_HT3_Pos) /*!< 0x00010000 */ +#define ADC_TR3_HT3_1 (0x02UL << ADC_TR3_HT3_Pos) /*!< 0x00020000 */ +#define ADC_TR3_HT3_2 (0x04UL << ADC_TR3_HT3_Pos) /*!< 0x00040000 */ +#define ADC_TR3_HT3_3 (0x08UL << ADC_TR3_HT3_Pos) /*!< 0x00080000 */ +#define ADC_TR3_HT3_4 (0x10UL << ADC_TR3_HT3_Pos) /*!< 0x00100000 */ +#define ADC_TR3_HT3_5 (0x20UL << ADC_TR3_HT3_Pos) /*!< 0x00200000 */ +#define ADC_TR3_HT3_6 (0x40UL << ADC_TR3_HT3_Pos) /*!< 0x00400000 */ +#define ADC_TR3_HT3_7 (0x80UL << ADC_TR3_HT3_Pos) /*!< 0x00800000 */ + +/******************** Bit definition for ADC_SQR1 register ******************/ +#define ADC_SQR1_L_Pos (0U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */ + +#define ADC_SQR1_SQ1_Pos (6U) +#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */ +#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */ +#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */ + +#define ADC_SQR1_SQ2_Pos (12U) +#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */ +#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */ +#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */ + +#define ADC_SQR1_SQ3_Pos (18U) +#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */ +#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */ +#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_SQ3_4 (0x10UL << ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */ + +#define ADC_SQR1_SQ4_Pos (24U) +#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */ +#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */ +#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */ +#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */ +#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */ +#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR2 register ******************/ +#define ADC_SQR2_SQ5_Pos (0U) +#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ6_Pos (6U) +#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */ +#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */ +#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */ + +#define ADC_SQR2_SQ7_Pos (12U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */ + +#define ADC_SQR2_SQ8_Pos (18U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */ + +#define ADC_SQR2_SQ9_Pos (24U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR3 register ******************/ +#define ADC_SQR3_SQ10_Pos (0U) +#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ11_Pos (6U) +#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */ +#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */ +#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */ +#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */ + +#define ADC_SQR3_SQ12_Pos (12U) +#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */ +#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */ +#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */ + +#define ADC_SQR3_SQ13_Pos (18U) +#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */ +#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */ +#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */ + +#define ADC_SQR3_SQ14_Pos (24U) +#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */ +#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */ +#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */ + +/******************** Bit definition for ADC_SQR4 register ******************/ +#define ADC_SQR4_SQ15_Pos (0U) +#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */ +#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */ +#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */ +#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */ +#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */ +#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */ + +#define ADC_SQR4_SQ16_Pos (6U) +#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */ +#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */ +#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */ +#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */ +#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */ +#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_RDATA_Pos (0U) +#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */ +#define ADC_DR_RDATA_0 (0x0001UL << ADC_DR_RDATA_Pos) /*!< 0x00000001 */ +#define ADC_DR_RDATA_1 (0x0002UL << ADC_DR_RDATA_Pos) /*!< 0x00000002 */ +#define ADC_DR_RDATA_2 (0x0004UL << ADC_DR_RDATA_Pos) /*!< 0x00000004 */ +#define ADC_DR_RDATA_3 (0x0008UL << ADC_DR_RDATA_Pos) /*!< 0x00000008 */ +#define ADC_DR_RDATA_4 (0x0010UL << ADC_DR_RDATA_Pos) /*!< 0x00000010 */ +#define ADC_DR_RDATA_5 (0x0020UL << ADC_DR_RDATA_Pos) /*!< 0x00000020 */ +#define ADC_DR_RDATA_6 (0x0040UL << ADC_DR_RDATA_Pos) /*!< 0x00000040 */ +#define ADC_DR_RDATA_7 (0x0080UL << ADC_DR_RDATA_Pos) /*!< 0x00000080 */ +#define ADC_DR_RDATA_8 (0x0100UL << ADC_DR_RDATA_Pos) /*!< 0x00000100 */ +#define ADC_DR_RDATA_9 (0x0200UL << ADC_DR_RDATA_Pos) /*!< 0x00000200 */ +#define ADC_DR_RDATA_10 (0x0400UL << ADC_DR_RDATA_Pos) /*!< 0x00000400 */ +#define ADC_DR_RDATA_11 (0x0800UL << ADC_DR_RDATA_Pos) /*!< 0x00000800 */ +#define ADC_DR_RDATA_12 (0x1000UL << ADC_DR_RDATA_Pos) /*!< 0x00001000 */ +#define ADC_DR_RDATA_13 (0x2000UL << ADC_DR_RDATA_Pos) /*!< 0x00002000 */ +#define ADC_DR_RDATA_14 (0x4000UL << ADC_DR_RDATA_Pos) /*!< 0x00004000 */ +#define ADC_DR_RDATA_15 (0x8000UL << ADC_DR_RDATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_JSQR register ******************/ +#define ADC_JSQR_JL_Pos (0U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */ + +#define ADC_JSQR_JEXTSEL_Pos (2U) +#define ADC_JSQR_JEXTSEL_Msk (0xFUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000003C */ +#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */ +#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */ + +#define ADC_JSQR_JEXTEN_Pos (6U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x000000C0 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000040 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ + +#define ADC_JSQR_JSQ1_Pos (8U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001F00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000100 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ + +#define ADC_JSQR_JSQ2_Pos (14U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */ + +#define ADC_JSQR_JSQ3_Pos (20U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x01F00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00100000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ + +#define ADC_JSQR_JSQ4_Pos (26U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0x7C000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x04000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ + +/******************** Bit definition for ADC_OFR1 register ******************/ +#define ADC_OFR1_OFFSET1_Pos (0U) +#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */ +#define ADC_OFR1_OFFSET1_0 (0x001UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000001 */ +#define ADC_OFR1_OFFSET1_1 (0x002UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000002 */ +#define ADC_OFR1_OFFSET1_2 (0x004UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000004 */ +#define ADC_OFR1_OFFSET1_3 (0x008UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000008 */ +#define ADC_OFR1_OFFSET1_4 (0x010UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000010 */ +#define ADC_OFR1_OFFSET1_5 (0x020UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000020 */ +#define ADC_OFR1_OFFSET1_6 (0x040UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000040 */ +#define ADC_OFR1_OFFSET1_7 (0x080UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000080 */ +#define ADC_OFR1_OFFSET1_8 (0x100UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000100 */ +#define ADC_OFR1_OFFSET1_9 (0x200UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000200 */ +#define ADC_OFR1_OFFSET1_10 (0x400UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000400 */ +#define ADC_OFR1_OFFSET1_11 (0x800UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000800 */ + +#define ADC_OFR1_OFFSET1_CH_Pos (26U) +#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */ +#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR1_OFFSET1_EN_Pos (31U) +#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */ + +/******************** Bit definition for ADC_OFR2 register ******************/ +#define ADC_OFR2_OFFSET2_Pos (0U) +#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */ +#define ADC_OFR2_OFFSET2_0 (0x001UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000001 */ +#define ADC_OFR2_OFFSET2_1 (0x002UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000002 */ +#define ADC_OFR2_OFFSET2_2 (0x004UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000004 */ +#define ADC_OFR2_OFFSET2_3 (0x008UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000008 */ +#define ADC_OFR2_OFFSET2_4 (0x010UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000010 */ +#define ADC_OFR2_OFFSET2_5 (0x020UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000020 */ +#define ADC_OFR2_OFFSET2_6 (0x040UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000040 */ +#define ADC_OFR2_OFFSET2_7 (0x080UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000080 */ +#define ADC_OFR2_OFFSET2_8 (0x100UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000100 */ +#define ADC_OFR2_OFFSET2_9 (0x200UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000200 */ +#define ADC_OFR2_OFFSET2_10 (0x400UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000400 */ +#define ADC_OFR2_OFFSET2_11 (0x800UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000800 */ + +#define ADC_OFR2_OFFSET2_CH_Pos (26U) +#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */ +#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR2_OFFSET2_EN_Pos (31U) +#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */ + +/******************** Bit definition for ADC_OFR3 register ******************/ +#define ADC_OFR3_OFFSET3_Pos (0U) +#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */ +#define ADC_OFR3_OFFSET3_0 (0x001UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000001 */ +#define ADC_OFR3_OFFSET3_1 (0x002UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000002 */ +#define ADC_OFR3_OFFSET3_2 (0x004UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000004 */ +#define ADC_OFR3_OFFSET3_3 (0x008UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000008 */ +#define ADC_OFR3_OFFSET3_4 (0x010UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000010 */ +#define ADC_OFR3_OFFSET3_5 (0x020UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000020 */ +#define ADC_OFR3_OFFSET3_6 (0x040UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000040 */ +#define ADC_OFR3_OFFSET3_7 (0x080UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000080 */ +#define ADC_OFR3_OFFSET3_8 (0x100UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000100 */ +#define ADC_OFR3_OFFSET3_9 (0x200UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000200 */ +#define ADC_OFR3_OFFSET3_10 (0x400UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000400 */ +#define ADC_OFR3_OFFSET3_11 (0x800UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000800 */ + +#define ADC_OFR3_OFFSET3_CH_Pos (26U) +#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */ +#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR3_OFFSET3_EN_Pos (31U) +#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */ + +/******************** Bit definition for ADC_OFR4 register ******************/ +#define ADC_OFR4_OFFSET4_Pos (0U) +#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */ +#define ADC_OFR4_OFFSET4_0 (0x001UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000001 */ +#define ADC_OFR4_OFFSET4_1 (0x002UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000002 */ +#define ADC_OFR4_OFFSET4_2 (0x004UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000004 */ +#define ADC_OFR4_OFFSET4_3 (0x008UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000008 */ +#define ADC_OFR4_OFFSET4_4 (0x010UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000010 */ +#define ADC_OFR4_OFFSET4_5 (0x020UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000020 */ +#define ADC_OFR4_OFFSET4_6 (0x040UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000040 */ +#define ADC_OFR4_OFFSET4_7 (0x080UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000080 */ +#define ADC_OFR4_OFFSET4_8 (0x100UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000100 */ +#define ADC_OFR4_OFFSET4_9 (0x200UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000200 */ +#define ADC_OFR4_OFFSET4_10 (0x400UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000400 */ +#define ADC_OFR4_OFFSET4_11 (0x800UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000800 */ + +#define ADC_OFR4_OFFSET4_CH_Pos (26U) +#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */ +#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */ +#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */ +#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */ +#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */ +#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */ +#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */ + +#define ADC_OFR4_OFFSET4_EN_Pos (31U) +#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */ +#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */ + +/******************** Bit definition for ADC_JDR1 register ******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ +#define ADC_JDR1_JDATA_0 (0x0001UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR1_JDATA_1 (0x0002UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR1_JDATA_2 (0x0004UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR1_JDATA_3 (0x0008UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR1_JDATA_4 (0x0010UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR1_JDATA_5 (0x0020UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR1_JDATA_6 (0x0040UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR1_JDATA_7 (0x0080UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR1_JDATA_8 (0x0100UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR1_JDATA_9 (0x0200UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR1_JDATA_10 (0x0400UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR1_JDATA_11 (0x0800UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR1_JDATA_12 (0x1000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR1_JDATA_13 (0x2000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR1_JDATA_14 (0x4000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR1_JDATA_15 (0x8000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_JDR2 register ******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ +#define ADC_JDR2_JDATA_0 (0x0001UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR2_JDATA_1 (0x0002UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR2_JDATA_2 (0x0004UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR2_JDATA_3 (0x0008UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR2_JDATA_4 (0x0010UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR2_JDATA_5 (0x0020UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR2_JDATA_6 (0x0040UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR2_JDATA_7 (0x0080UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR2_JDATA_8 (0x0100UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR2_JDATA_9 (0x0200UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR2_JDATA_10 (0x0400UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR2_JDATA_11 (0x0800UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR2_JDATA_12 (0x1000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR2_JDATA_13 (0x2000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR2_JDATA_14 (0x4000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR2_JDATA_15 (0x8000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_JDR3 register ******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ +#define ADC_JDR3_JDATA_0 (0x0001UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR3_JDATA_1 (0x0002UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR3_JDATA_2 (0x0004UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR3_JDATA_3 (0x0008UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR3_JDATA_4 (0x0010UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR3_JDATA_5 (0x0020UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR3_JDATA_6 (0x0040UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR3_JDATA_7 (0x0080UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR3_JDATA_8 (0x0100UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR3_JDATA_9 (0x0200UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR3_JDATA_10 (0x0400UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR3_JDATA_11 (0x0800UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR3_JDATA_12 (0x1000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR3_JDATA_13 (0x2000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR3_JDATA_14 (0x4000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR3_JDATA_15 (0x8000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_JDR4 register ******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ +#define ADC_JDR4_JDATA_0 (0x0001UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR4_JDATA_1 (0x0002UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR4_JDATA_2 (0x0004UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR4_JDATA_3 (0x0008UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR4_JDATA_4 (0x0010UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR4_JDATA_5 (0x0020UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR4_JDATA_6 (0x0040UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR4_JDATA_7 (0x0080UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR4_JDATA_8 (0x0100UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR4_JDATA_9 (0x0200UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR4_JDATA_10 (0x0400UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR4_JDATA_11 (0x0800UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR4_JDATA_12 (0x1000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR4_JDATA_13 (0x2000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR4_JDATA_14 (0x4000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR4_JDATA_15 (0x8000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00008000 */ + +/******************** Bit definition for ADC_AWD2CR register ****************/ +#define ADC_AWD2CR_AWD2CH_Pos (0U) +#define ADC_AWD2CR_AWD2CH_Msk (0x7FFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */ +#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_AWD3CR register ****************/ +#define ADC_AWD3CR_AWD3CH_Pos (0U) +#define ADC_AWD3CR_AWD3CH_Msk (0x7FFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */ +#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */ +#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */ +#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */ +#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */ +#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */ +#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */ +#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */ +#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */ +#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */ +#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */ +#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */ +#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */ +#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */ +#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */ +#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */ +#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */ +#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */ +#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */ +#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */ +#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_DIFSEL register ****************/ +#define ADC_DIFSEL_DIFSEL_Pos (0U) +#define ADC_DIFSEL_DIFSEL_Msk (0x7FFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */ +#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */ +#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */ +#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */ +#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */ +#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */ +#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */ +#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */ +#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */ +#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */ +#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */ +#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */ +#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */ +#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */ +#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */ +#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */ +#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */ +#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */ +#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */ +#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */ +#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */ + +/******************** Bit definition for ADC_CALFACT register ***************/ +#define ADC_CALFACT_CALFACT_S_Pos (0U) +#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */ +#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */ +#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */ +#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */ +#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */ +#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */ +#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */ +#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */ +#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000040 */ + +#define ADC_CALFACT_CALFACT_D_Pos (16U) +#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */ +#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */ +#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */ +#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */ +#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */ +#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */ +#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */ +#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */ +#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00400000 */ + +/************************* ADC Common registers *****************************/ +/******************** Bit definition for ADC_CSR register *******************/ +#define ADC_CSR_ADRDY_MST_Pos (0U) +#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */ +#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */ +#define ADC_CSR_EOSMP_MST_Pos (1U) +#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */ +#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */ +#define ADC_CSR_EOC_MST_Pos (2U) +#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */ +#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_MST_Pos (3U) +#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */ +#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_MST_Pos (4U) +#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */ +#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */ +#define ADC_CSR_JEOC_MST_Pos (5U) +#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */ +#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_MST_Pos (6U) +#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */ +#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_MST_Pos (7U) +#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */ +#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */ +#define ADC_CSR_AWD2_MST_Pos (8U) +#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */ +#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */ +#define ADC_CSR_AWD3_MST_Pos (9U) +#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */ +#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_MST_Pos (10U) +#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */ +#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */ + +#define ADC_CSR_ADRDY_SLV_Pos (16U) +#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */ +#define ADC_CSR_EOSMP_SLV_Pos (17U) +#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */ +#define ADC_CSR_EOC_SLV_Pos (18U) +#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */ +#define ADC_CSR_EOS_SLV_Pos (19U) +#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */ +#define ADC_CSR_OVR_SLV_Pos (20U) +#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */ +#define ADC_CSR_JEOC_SLV_Pos (21U) +#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */ +#define ADC_CSR_JEOS_SLV_Pos (22U) +#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */ +#define ADC_CSR_AWD1_SLV_Pos (23U) +#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */ +#define ADC_CSR_AWD2_SLV_Pos (24U) +#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */ +#define ADC_CSR_AWD3_SLV_Pos (25U) +#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */ +#define ADC_CSR_JQOVF_SLV_Pos (26U) +#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */ + +/******************** Bit definition for ADC_CCR register *******************/ +#define ADC_CCR_DUAL_Pos (0U) +#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */ +#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */ +#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */ +#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */ +#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */ +#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */ +#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */ + +#define ADC_CCR_DELAY_Pos (8U) +#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */ +#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */ +#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */ +#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */ +#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */ +#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */ + +#define ADC_CCR_DMACFG_Pos (13U) +#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */ +#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */ + +#define ADC_CCR_MDMA_Pos (14U) +#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */ +#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */ +#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */ +#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */ + +#define ADC_CCR_CKMODE_Pos (16U) +#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */ +#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */ +#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */ +#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */ + +#define ADC_CCR_PRESC_Pos (18U) +#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */ +#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */ +#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */ +#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */ +#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */ +#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */ + +#define ADC_CCR_VREFEN_Pos (22U) +#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */ +#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */ +#define ADC_CCR_TSEN_Pos (23U) +#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */ +#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATEN_Pos (24U) +#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */ + +/******************** Bit definition for ADC_CDR register *******************/ +#define ADC_CDR_RDATA_MST_Pos (0U) +#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */ +#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */ +#define ADC_CDR_RDATA_MST_0 (0x0001UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000001 */ +#define ADC_CDR_RDATA_MST_1 (0x0002UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000002 */ +#define ADC_CDR_RDATA_MST_2 (0x0004UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000004 */ +#define ADC_CDR_RDATA_MST_3 (0x0008UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000008 */ +#define ADC_CDR_RDATA_MST_4 (0x0010UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000010 */ +#define ADC_CDR_RDATA_MST_5 (0x0020UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000020 */ +#define ADC_CDR_RDATA_MST_6 (0x0040UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000040 */ +#define ADC_CDR_RDATA_MST_7 (0x0080UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000080 */ +#define ADC_CDR_RDATA_MST_8 (0x0100UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000100 */ +#define ADC_CDR_RDATA_MST_9 (0x0200UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000200 */ +#define ADC_CDR_RDATA_MST_10 (0x0400UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000400 */ +#define ADC_CDR_RDATA_MST_11 (0x0800UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000800 */ +#define ADC_CDR_RDATA_MST_12 (0x1000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00001000 */ +#define ADC_CDR_RDATA_MST_13 (0x2000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00002000 */ +#define ADC_CDR_RDATA_MST_14 (0x4000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00004000 */ +#define ADC_CDR_RDATA_MST_15 (0x8000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00008000 */ + +#define ADC_CDR_RDATA_SLV_Pos (16U) +#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */ +#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */ +#define ADC_CDR_RDATA_SLV_0 (0x0001UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CDR_RDATA_SLV_1 (0x0002UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CDR_RDATA_SLV_2 (0x0004UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CDR_RDATA_SLV_3 (0x0008UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CDR_RDATA_SLV_4 (0x0010UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CDR_RDATA_SLV_5 (0x0020UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CDR_RDATA_SLV_6 (0x0040UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CDR_RDATA_SLV_7 (0x0080UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CDR_RDATA_SLV_8 (0x0100UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CDR_RDATA_SLV_9 (0x0200UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CDR_RDATA_SLV_10 (0x0400UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CDR_RDATA_SLV_11 (0x0800UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x08000000 */ +#define ADC_CDR_RDATA_SLV_12 (0x1000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x10000000 */ +#define ADC_CDR_RDATA_SLV_13 (0x2000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x20000000 */ +#define ADC_CDR_RDATA_SLV_14 (0x4000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x40000000 */ +#define ADC_CDR_RDATA_SLV_15 (0x8000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x80000000 */ + +/******************************************************************************/ +/* */ +/* Controller Area Network */ +/* */ +/******************************************************************************/ +/*!*/ +#define DAC_CR_CEN1_Pos (14U) +#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */ +#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/ + +#define DAC_CR_EN2_Pos (16U) +#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */ +#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/ +#define DAC_CR_CEN2_Pos (30U) +#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */ +#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/ + +/***************** Bit definition for DAC_SWTRIGR register ******************/ +#define DAC_SWTRIGR_SWTRIG1_Pos (0U) +#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */ +#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!
© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.
+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx + * @{ + */ + +#ifndef __STM32L4xx_H +#define __STM32L4xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Library_configuration_section + * @{ + */ + +/** + * @brief STM32 Family + */ +#if !defined (STM32L4) +#define STM32L4 +#endif /* STM32L4 */ + +/* Uncomment the line below according to the target STM32L4 device used in your + application + */ + +#if !defined (STM32L412xx) && !defined (STM32L422xx) && \ + !defined (STM32L431xx) && !defined (STM32L432xx) && !defined (STM32L433xx) && !defined (STM32L442xx) && !defined (STM32L443xx) && \ + !defined (STM32L451xx) && !defined (STM32L452xx) && !defined (STM32L462xx) && \ + !defined (STM32L471xx) && !defined (STM32L475xx) && !defined (STM32L476xx) && !defined (STM32L485xx) && !defined (STM32L486xx) && \ + !defined (STM32L496xx) && !defined (STM32L4A6xx) && \ + !defined (STM32L4R5xx) && !defined (STM32L4R7xx) && !defined (STM32L4R9xx) && !defined (STM32L4S5xx) && !defined (STM32L4S7xx) && !defined (STM32L4S9xx) + /* #define STM32L412xx */ /*!< STM32L412xx Devices */ + /* #define STM32L422xx */ /*!< STM32L422xx Devices */ + /* #define STM32L431xx */ /*!< STM32L431xx Devices */ + /* #define STM32L432xx */ /*!< STM32L432xx Devices */ + /* #define STM32L433xx */ /*!< STM32L433xx Devices */ + /* #define STM32L442xx */ /*!< STM32L442xx Devices */ + /* #define STM32L443xx */ /*!< STM32L443xx Devices */ + /* #define STM32L451xx */ /*!< STM32L451xx Devices */ + /* #define STM32L452xx */ /*!< STM32L452xx Devices */ + /* #define STM32L462xx */ /*!< STM32L462xx Devices */ + /* #define STM32L471xx */ /*!< STM32L471xx Devices */ + /* #define STM32L475xx */ /*!< STM32L475xx Devices */ + /* #define STM32L476xx */ /*!< STM32L476xx Devices */ + /* #define STM32L485xx */ /*!< STM32L485xx Devices */ + /* #define STM32L486xx */ /*!< STM32L486xx Devices */ + /* #define STM32L496xx */ /*!< STM32L496xx Devices */ + /* #define STM32L4A6xx */ /*!< STM32L4A6xx Devices */ + /* #define STM32L4R5xx */ /*!< STM32L4R5xx Devices */ + /* #define STM32L4R7xx */ /*!< STM32L4R7xx Devices */ + /* #define STM32L4R9xx */ /*!< STM32L4R9xx Devices */ + /* #define STM32L4S5xx */ /*!< STM32L4S5xx Devices */ + /* #define STM32L4S7xx */ /*!< STM32L4S7xx Devices */ + /* #define STM32L4S9xx */ /*!< STM32L4S9xx Devices */ +#endif + +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ +#if !defined (USE_HAL_DRIVER) +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + /*#define USE_HAL_DRIVER */ +#endif /* USE_HAL_DRIVER */ + +/** + * @brief CMSIS Device version number + */ +#define __STM32L4_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L4_CMSIS_VERSION_SUB1 (0x05) /*!< [23:16] sub1 version */ +#define __STM32L4_CMSIS_VERSION_SUB2 (0x01) /*!< [15:8] sub2 version */ +#define __STM32L4_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L4_CMSIS_VERSION ((__STM32L4_CMSIS_VERSION_MAIN << 24)\ + |(__STM32L4_CMSIS_VERSION_SUB1 << 16)\ + |(__STM32L4_CMSIS_VERSION_SUB2 << 8 )\ + |(__STM32L4_CMSIS_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Device_Included + * @{ + */ + +#if defined(STM32L412xx) + #include "stm32l412xx.h" +#elif defined(STM32L422xx) + #include "stm32l422xx.h" +#elif defined(STM32L431xx) + #include "stm32l431xx.h" +#elif defined(STM32L432xx) + #include "stm32l432xx.h" +#elif defined(STM32L433xx) + #include "stm32l433xx.h" +#elif defined(STM32L442xx) + #include "stm32l442xx.h" +#elif defined(STM32L443xx) + #include "stm32l443xx.h" +#elif defined(STM32L451xx) + #include "stm32l451xx.h" +#elif defined(STM32L452xx) + #include "stm32l452xx.h" +#elif defined(STM32L462xx) + #include "stm32l462xx.h" +#elif defined(STM32L471xx) + #include "stm32l471xx.h" +#elif defined(STM32L475xx) + #include "stm32l475xx.h" +#elif defined(STM32L476xx) + #include "stm32l476xx.h" +#elif defined(STM32L485xx) + #include "stm32l485xx.h" +#elif defined(STM32L486xx) + #include "stm32l486xx.h" +#elif defined(STM32L496xx) + #include "stm32l496xx.h" +#elif defined(STM32L4A6xx) + #include "stm32l4a6xx.h" +#elif defined(STM32L4R5xx) + #include "stm32l4r5xx.h" +#elif defined(STM32L4R7xx) + #include "stm32l4r7xx.h" +#elif defined(STM32L4R9xx) + #include "stm32l4r9xx.h" +#elif defined(STM32L4S5xx) + #include "stm32l4s5xx.h" +#elif defined(STM32L4S7xx) + #include "stm32l4s7xx.h" +#elif defined(STM32L4S9xx) + #include "stm32l4s9xx.h" +#else + #error "Please select first the target STM32L4xx device used in your application (in stm32l4xx.h file)" +#endif + +/** + * @} + */ + +/** @addtogroup Exported_types + * @{ + */ +typedef enum +{ + RESET = 0, + SET = !RESET +} FlagStatus, ITStatus; + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum +{ + SUCCESS = 0, + ERROR = !SUCCESS +} ErrorStatus; + +/** + * @} + */ + + +/** @addtogroup Exported_macros + * @{ + */ +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) + +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) + +#define READ_BIT(REG, BIT) ((REG) & (BIT)) + +#define CLEAR_REG(REG) ((REG) = (0x0)) + +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) + +#define READ_REG(REG) ((REG)) + +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL))) + + +/** + * @} + */ + +#if defined (USE_HAL_DRIVER) + #include "stm32l4xx_hal.h" +#endif /* USE_HAL_DRIVER */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __STM32L4xx_H */ +/** + * @} + */ + +/** + * @} + */ + + + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/stm32l4xx_hal_conf.h b/targets/STM32L476RG_NB476/Inc/stm32l4xx_hal_conf.h new file mode 100644 index 000000000..a62efea54 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/stm32l4xx_hal_conf.h @@ -0,0 +1,440 @@ +/** + ****************************************************************************** + * @file stm32l4xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2020 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_HAL_CONF_H +#define __STM32L4xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ + +#define HAL_MODULE_ENABLED +/*#define HAL_ADC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_CAN_MODULE_ENABLED */ +/*#define HAL_COMP_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_DAC_MODULE_ENABLED */ +/*#define HAL_DCMI_MODULE_ENABLED */ +/*#define HAL_DMA2D_MODULE_ENABLED */ +/*#define HAL_DFSDM_MODULE_ENABLED */ +/*#define HAL_DSI_MODULE_ENABLED */ +/*#define HAL_FIREWALL_MODULE_ENABLED */ +/*#define HAL_GFXMMU_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +/*#define HAL_HASH_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_LTDC_MODULE_ENABLED */ +/*#define HAL_LCD_MODULE_ENABLED */ +/*#define HAL_LPTIM_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_OPAMP_MODULE_ENABLED */ +/*#define HAL_OSPI_MODULE_ENABLED */ +/*#define HAL_OSPI_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_QSPI_MODULE_ENABLED */ +/*#define HAL_QSPI_MODULE_ENABLED */ +/*#define HAL_RNG_MODULE_ENABLED */ +#define HAL_RTC_MODULE_ENABLED +/*#define HAL_SAI_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_SMBUS_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +/*#define HAL_SPI_MODULE_ENABLED */ +/*#define HAL_SRAM_MODULE_ENABLED */ +/*#define HAL_SWPMI_MODULE_ENABLED */ +/*#define HAL_TIM_MODULE_ENABLED */ +/*#define HAL_TSC_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +/*#define HAL_EXTI_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +//#define HAL_EXTI_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## Oscillator Values adaptation ####################*/ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal Multiple Speed oscillator (MSI) default value. + * This value is the default MSI range value after Reset. + */ +#if !defined (MSI_VALUE) + #define MSI_VALUE ((uint32_t)4000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal High Speed oscillator (HSI48) value for USB FS, SDMMC and RNG. + * This internal oscillator is mainly dedicated to provide a high precision clock to + * the USB peripheral by means of a special Clock Recovery System (CRS) circuitry. + * When the CRS is not used, the HSI48 RC oscillator runs on it default frequency + * which is subject to manufacturing process variations. + */ +#if !defined (HSI48_VALUE) + #define HSI48_VALUE ((uint32_t)48000000U) /*!< Value of the Internal High Speed oscillator for USB FS/SDMMC/RNG in Hz. + The real value my vary depending on manufacturing process variations.*/ +#endif /* HSI48_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature.*/ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for SAI1 peripheral + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * frequency. + */ +#if !defined (EXTERNAL_SAI1_CLOCK_VALUE) + #define EXTERNAL_SAI1_CLOCK_VALUE ((uint32_t)2097000U) /*!< Value of the SAI1 External clock source in Hz*/ +#endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + +/** + * @brief External clock source for SAI2 peripheral + * This value is used by the RCC HAL module to compute the SAI1 & SAI2 clock source + * frequency. + */ +#if !defined (EXTERNAL_SAI2_CLOCK_VALUE) + #define EXTERNAL_SAI2_CLOCK_VALUE ((uint32_t)2097000U) /*!< Value of the SAI2 External clock source in Hz*/ +#endif /* EXTERNAL_SAI2_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ + +#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 0U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32l4xx_hal_rcc.h" + #include "stm32l4xx_hal_rcc_ex.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32l4xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32l4xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32l4xx_hal_dma.h" + #include "stm32l4xx_hal_dma_ex.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32l4xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32l4xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32l4xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32l4xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED + #include "stm32l4xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32l4xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32l4xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32l4xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32l4xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32l4xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32l4xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_FIREWALL_MODULE_ENABLED + #include "stm32l4xx_hal_firewall.h" +#endif /* HAL_FIREWALL_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32l4xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32l4xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32l4xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32l4xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32l4xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32l4xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32l4xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32l4xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LCD_MODULE_ENABLED + #include "stm32l4xx_hal_lcd.h" +#endif /* HAL_LCD_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32l4xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32l4xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_OPAMP_MODULE_ENABLED + #include "stm32l4xx_hal_opamp.h" +#endif /* HAL_OPAMP_MODULE_ENABLED */ + +#ifdef HAL_OSPI_MODULE_ENABLED + #include "stm32l4xx_hal_ospi.h" +#endif /* HAL_OSPI_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32l4xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32l4xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32l4xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32l4xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32l4xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32l4xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32l4xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32l4xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_SWPMI_MODULE_ENABLED + #include "stm32l4xx_hal_swpmi.h" +#endif /* HAL_SWPMI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32l4xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_TSC_MODULE_ENABLED + #include "stm32l4xx_hal_tsc.h" +#endif /* HAL_TSC_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32l4xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32l4xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32l4xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32l4xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32l4xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32l4xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32l4xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_GFXMMU_MODULE_ENABLED + #include "stm32l4xx_hal_gfxmmu.h" +#endif /* HAL_GFXMMU_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((char *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(char *file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L4xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/stm32l4xx_it.h b/targets/STM32L476RG_NB476/Inc/stm32l4xx_it.h new file mode 100644 index 000000000..62c17d102 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/stm32l4xx_it.h @@ -0,0 +1,68 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_IT_H +#define __STM32L4xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void LPUART1_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L4xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/sys.h b/targets/STM32L476RG_NB476/Inc/sys.h new file mode 100644 index 000000000..0f51f9f68 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/sys.h @@ -0,0 +1,56 @@ +/** + ****************************************************************************** + * File Name : SYS.h + * Description : This file provides code for the configuration + * of the SYS instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __sys_H +#define __sys_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_SYS_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ sys_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/sys_init.h b/targets/STM32L476RG_NB476/Inc/sys_init.h new file mode 100644 index 000000000..c1ead497b --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/sys_init.h @@ -0,0 +1,83 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __SYS_H_ +#define __SYS_H_ + +/* Includes LiteOS------------------------------------------------------------------*/ + +#include "los_base.h" +#include "los_config.h" +#include "los_sys.h" +#include "los_typedef.h" +#include "los_task.ph" +#include "los_hwi.h" +#include "los_sem.h" +#include "los_event.h" +#include "los_memory.h" +#include "los_queue.ph" + +#include "stdlib.h" +#include "string.h" +#include + +#include "stm32l4xx_hal.h" +#include "stm32l4xx_it.h" +#include "hal_rng.h" +#include "dwt.h" +#include "usart.h" +#include "gpio.h" +#include "i2c.h" + + +#ifdef WITH_DTLS +#include "mbedtls/net.h" +#include "mbedtls/ssl.h" +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +uint32_t HAL_GetTick(void); +void _Error_Handler(char *, int); +void SystemClock_Config(void); +#define Error_Handler() _Error_Handler(__FILE__, __LINE__) +#ifdef __cplusplus +} +#endif + +#endif /* __SYS_H_ */ + diff --git a/targets/STM32L476RG_NB476/Inc/system_stm32l4xx.h b/targets/STM32L476RG_NB476/Inc/system_stm32l4xx.h new file mode 100644 index 000000000..9eceb0008 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/system_stm32l4xx.h @@ -0,0 +1,107 @@ +/** + ****************************************************************************** + * @file system_stm32l4xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device System Source File for STM32L4xx devices. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32L4XX_H +#define __SYSTEM_STM32L4XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32L4xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32L4xx_System_Exported_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetSysClockFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ +extern const uint32_t MSIRangeTable[12]; /*!< MSI ranges table values */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32L4XX_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Inc/usart.h b/targets/STM32L476RG_NB476/Inc/usart.h new file mode 100644 index 000000000..46ea804b8 --- /dev/null +++ b/targets/STM32L476RG_NB476/Inc/usart.h @@ -0,0 +1,62 @@ +/** + ****************************************************************************** + * File Name : USART.h + * Description : This file provides code for the configuration + * of the USART instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __usart_H +#define __usart_H +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern UART_HandleTypeDef hlpuart1; +extern UART_HandleTypeDef huart1; +extern UART_HandleTypeDef huart3; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_LPUART1_UART_Init(void); +void MX_USART1_UART_Init(void); +void MX_USART3_UART_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ usart_H */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Kconfig b/targets/STM32L476RG_NB476/Kconfig new file mode 100644 index 000000000..ac25e9f1d --- /dev/null +++ b/targets/STM32L476RG_NB476/Kconfig @@ -0,0 +1,58 @@ +# +# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved. +# +# LiteOS NOVA is licensed under the Mulan PSL v1. +# You can use this software according to the terms and conditions of the Mulan PSL v1. +# You may obtain a copy of Mulan PSL v1 at: +# +# http://license.coscl.org.cn/MulanPSL +# +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR +# FIT FOR A PARTICULAR PURPOSE. +# See the Mulan PSL v1 for more details. +# + +menu "LiteOS for STM32L476_NB476 Project configuration For IoT Link" + +comment "This is a demo project and hope you enjoy it" + +config ARCH_CPU_TYPE + string "Select the cpu arch:armv7-m armv6-m riscv32 x86-64" + default "armv7-m" + +config UARTAT_RCVMAX + int "Config the at uart receive buffer size" + default 2048 + +config UARTAT_BAUDRATE + int "Config the at uart baud rate" + default 9600 + +config UARTAT_DEVNAME + string "Config the at uart device name" + default "atdev" + +rsource "../../iot_link/Kconfig" + + +choice Demo + optional + prompt "User Defined Demo" + config Demo_None + bool "none" + config Demo_Use_Coap + bool "Report temperature" + select OC_COAP + select SHELL_ENABLE + select AT_ENABLE + select BOUDICA120 +endchoice + +config USER_DEMO + string + default "use_coap_demo" if Demo_Use_Coap + default "none" + + +endmenu diff --git a/targets/STM32L476RG_NB476/Lib/hwpatch.lib b/targets/STM32L476RG_NB476/Lib/hwpatch.lib new file mode 100644 index 0000000000000000000000000000000000000000..1eee9bd446538ebede90232d5f4e7aaddc10904c GIT binary patch literal 118352 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%0A@-DCJKT#~3PO%qU2MkQlSj%my~-Ouxub{K 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 literal 0 HcmV?d00001 diff --git a/targets/STM32L476RG_NB476/Lib/libhwpatch.a b/targets/STM32L476RG_NB476/Lib/libhwpatch.a new file mode 100644 index 0000000000000000000000000000000000000000..99d0d2fab1ed878b9795f971e25b7d4ef6eea838 GIT binary patch literal 100860 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

-7;0Bpn&O6@qr22ZKguV5Y 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 VA|U+6_TIknS@0dOUCFSK{6BXOBY*$^ literal 0 HcmV?d00001 diff --git a/targets/STM32L476RG_NB476/OS_CONFIG/iot_link_config.h b/targets/STM32L476RG_NB476/OS_CONFIG/iot_link_config.h new file mode 100644 index 000000000..7c81cc1b3 --- /dev/null +++ b/targets/STM32L476RG_NB476/OS_CONFIG/iot_link_config.h @@ -0,0 +1,45 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ +/** + * DATE AUTHOR INSTRUCTION + * 2019-07-27 14:49 zhangqianfu The first version + * + */ +#ifndef LITEOS_LAB_TARGETS_STM32L431_BEARPI_OS_CONFIG_IOT_LINK_CONFIG_H_ +#define LITEOS_LAB_TARGETS_STM32L431_BEARPI_OS_CONFIG_IOT_LINK_CONFIG_H_ + +#define CONFIG_AT_DEVICENAME "atdev_BC95" +#define CONFIG_AT_BAUDRATE 9600 + +#endif /* LITEOS_LAB_TARGETS_STM32L431_BEARPI_OS_CONFIG_IOT_LINK_CONFIG_H_ */ diff --git a/targets/STM32L476RG_NB476/OS_CONFIG/los_builddef.h b/targets/STM32L476RG_NB476/OS_CONFIG/los_builddef.h new file mode 100644 index 000000000..b208f6e07 --- /dev/null +++ b/targets/STM32L476RG_NB476/OS_CONFIG/los_builddef.h @@ -0,0 +1,239 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * HuaweiLite OS may be subject to applicable export control laws and regulations, which might + * include those applicable to HuaweiLite OS of U.S. and the country in which you are located. + * Import, export and usage of HuaweiLite OS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +/**@defgroup los_builddef + * @ingroup kernel + */ + +#ifndef _LOS_BUILDEF_H +#define _LOS_BUILDEF_H +#include "los_compiler.h" +#include "string.h" +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif /* __cpluscplus */ +#endif /* __cpluscplus */ + +/** + * @ingroup los_builddef + * Define inline keyword + */ + +/** + * @ingroup los_builddef + * Little endian + */ +#define OS_LITTLE_ENDIAN 0x1234 + +/** + * @ingroup los_builddef + * Big endian + */ +#define OS_BIG_ENDIAN 0x4321 + +/** + * @ingroup los_builddef + * Byte order + */ +#ifndef OS_BYTE_ORDER +#define OS_BYTE_ORDER OS_LITTLE_ENDIAN +#endif + +/* Define OS code data sections */ +/*The indicator function is inline*/ + +/** + * @ingroup los_builddef + * Allow inline sections + */ +#ifndef LITE_OS_SEC_ALW_INLINE +#define LITE_OS_SEC_ALW_INLINE //__attribute__((always_inline)) +#endif + +/** + * @ingroup los_builddef + * Vector table section + */ +#ifndef LITE_OS_SEC_VEC +#define LITE_OS_SEC_VEC __attribute__ ((section(".data.vector"))) +#endif + +/** + * @ingroup los_builddef + * .Text section (Code section) + */ +#ifndef LITE_OS_SEC_TEXT +#define LITE_OS_SEC_TEXT //__attribute__((section(".sram.text"))) +#endif + +/** + * @ingroup los_builddef + * .Text.ddr section + */ +#ifndef LITE_OS_SEC_TEXT_MINOR +#define LITE_OS_SEC_TEXT_MINOR // __attribute__((section(".dyn.text"))) +#endif + +/** + * @ingroup los_builddef + * .Text.init section + */ +#ifndef LITE_OS_SEC_TEXT_INIT +#define LITE_OS_SEC_TEXT_INIT //__attribute__((section(".dyn.text"))) +#endif + +/** + * @ingroup los_builddef + * Redirect .Text section (Code section) + */ +#ifndef LITE_OS_SEC_TEXT_REDIRECT +#define LITE_OS_SEC_TEXT_REDIRECT LITE_OS_SEC_TEXT +#endif + +/** + * @ingroup los_builddef + * Redirect .Text.ddr section + */ +#ifndef LITE_OS_SEC_TEXT_MINOR_REDIRECT +#define LITE_OS_SEC_TEXT_MINOR_REDIRECT LITE_OS_SEC_TEXT_MINOR +#endif + +/** + * @ingroup los_builddef + * Redirect .Text.init section + */ +#ifndef LITE_OS_SEC_TEXT_INIT_REDIRECT +#define LITE_OS_SEC_TEXT_INIT_REDIRECT LITE_OS_SEC_TEXT_INIT +#endif + +/** + * @ingroup los_builddef + * .Data section + */ +#ifndef LITE_OS_SEC_DATA +#define LITE_OS_SEC_DATA //__attribute__((section(".dyn.data"))) +#endif + +/** + * @ingroup los_builddef + * .Data.init section + */ +#ifndef LITE_OS_SEC_DATA_INIT +#define LITE_OS_SEC_DATA_INIT //__attribute__((section(".dyn.data"))) +#endif + +/** + * @ingroup los_builddef + * Not initialized variable section + */ +#ifndef LITE_OS_SEC_BSS +#define LITE_OS_SEC_BSS //__attribute__((section(".sym.bss"))) +#endif + +/** + * @ingroup los_builddef + * .bss.ddr section + */ +#ifndef LITE_OS_SEC_BSS_MINOR +#define LITE_OS_SEC_BSS_MINOR +#endif + +/** + * @ingroup los_builddef + * .bss.init sections + */ +#ifndef LITE_OS_SEC_BSS_INIT +#define LITE_OS_SEC_BSS_INIT +#endif + +#ifndef LITE_OS_SEC_TEXT_DATA +#define LITE_OS_SEC_TEXT_DATA //__attribute__((section(".dyn.data"))) +#define LITE_OS_SEC_TEXT_BSS //__attribute__((section(".dyn.bss"))) +#define LITE_OS_SEC_TEXT_RODATA //__attribute__((section(".dyn.rodata"))) +#endif + +#ifndef LITE_OS_SEC_SYMDATA +#define LITE_OS_SEC_SYMDATA //__attribute__((section(".sym.data"))) +#endif + +#ifndef LITE_OS_SEC_SYMBSS +#define LITE_OS_SEC_SYMBSS //__attribute__((section(".sym.bss"))) +#endif + + +#ifndef LITE_OS_SEC_KEEP_DATA_DDR +#define LITE_OS_SEC_KEEP_DATA_DDR //__attribute__((section(".keep.data.ddr"))) +#endif + +#ifndef LITE_OS_SEC_KEEP_TEXT_DDR +#define LITE_OS_SEC_KEEP_TEXT_DDR //__attribute__((section(".keep.text.ddr"))) +#endif + +#ifndef LITE_OS_SEC_KEEP_DATA_SRAM +#define LITE_OS_SEC_KEEP_DATA_SRAM //__attribute__((section(".keep.data.sram"))) +#endif + +#ifndef LITE_OS_SEC_KEEP_TEXT_SRAM +#define LITE_OS_SEC_KEEP_TEXT_SRAM //__attribute__((section(".keep.text.sram"))) +#endif + +#ifndef LITE_OS_SEC_BSS_MINOR +#define LITE_OS_SEC_BSS_MINOR +#endif + +/** + * @ingroup los_builddef + * .text.libsec section + */ +#ifndef LIB_SECURE_SEC_TEXT +#define LIB_SECURE_SEC_TEXT +#endif + +/** + * @ingroup los_builddef + * .text.libc section + */ +#ifndef LIBC_SEC_TEXT +#define LIBC_SEC_TEXT +#endif + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cpluscplus */ +#endif /* __cpluscplus */ + + +#endif /* _LOS_BUILDEF_H */ diff --git a/targets/STM32L476RG_NB476/OS_CONFIG/los_printf.h b/targets/STM32L476RG_NB476/OS_CONFIG/los_printf.h new file mode 100644 index 000000000..0a7a71802 --- /dev/null +++ b/targets/STM32L476RG_NB476/OS_CONFIG/los_printf.h @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +/**@defgroup los_printf Printf + * @ingroup kernel + */ + +#ifndef _LOS_PRINTF_H +#define _LOS_PRINTF_H +//#ifdef LOSCFG_LIB_LIBC +#include "stdarg.h" +//#endif +#ifdef LOSCFG_LIB_LIBCMINI +#include "libcmini.h" +#endif +#include "los_typedef.h" +#include "los_config.h" + +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +#define LOS_EMG_LEVEL 0 + +#define LOS_COMMOM_LEVEL (LOS_EMG_LEVEL + 1) + +#define LOS_ERR_LEVEL (LOS_COMMOM_LEVEL + 1) + +#define LOS_WARN_LEVEL (LOS_ERR_LEVEL + 1) + +#define LOS_INFO_LEVEL (LOS_WARN_LEVEL + 1) + +#define LOS_DEBUG_LEVEL (LOS_INFO_LEVEL + 1) + +#define PRINT_LEVEL LOS_ERR_LEVEL + +#if PRINT_LEVEL < LOS_DEBUG_LEVEL +#define PRINT_DEBUG(fmt, args...) +#else +#define PRINT_DEBUG(fmt, args...) do{(printf("[DEBUG] "), printf(fmt, ##args));}while(0) +#endif + +#if PRINT_LEVEL < LOS_INFO_LEVEL +#define PRINT_INFO(fmt, args...) +#else +#define PRINT_INFO(fmt, args...) do{(printf("[INFO] "), printf(fmt, ##args));}while(0) +#endif + +#if PRINT_LEVEL < LOS_WARN_LEVEL +#define PRINT_WARN(fmt, args...) +#else +#define PRINT_WARN(fmt, args...) do{(printf("[WARN] "), printf(fmt, ##args));}while(0) +#endif + +#if PRINT_LEVEL < LOS_ERR_LEVEL +#define PRINT_ERR(fmt, args...) +#else +#define PRINT_ERR(fmt, args...) do{(printf("[ERR] "), printf(fmt, ##args));}while(0) +#endif + +#if PRINT_LEVEL < LOS_COMMOM_LEVEL +#define PRINTK(fmt, args...) +#else +#define PRINTK(fmt, args...) printf(fmt, ##args) +#endif + +#if PRINT_LEVEL < LOS_EMG_LEVEL +#define PRINT_EMG(fmt, args...) +#else +#define PRINT_EMG(fmt, args...) do{(printf("[EMG] "), printf(fmt, ##args));}while(0) +#endif + +#define PRINT_RELEASE(fmt, args...) printf(fmt, ##args) + + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +#endif /* _LOS_PRINTF_H */ diff --git a/targets/STM32L476RG_NB476/OS_CONFIG/target_config.h b/targets/STM32L476RG_NB476/OS_CONFIG/target_config.h new file mode 100644 index 000000000..65cb59be4 --- /dev/null +++ b/targets/STM32L476RG_NB476/OS_CONFIG/target_config.h @@ -0,0 +1,399 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +/**@defgroup los_config System configuration items + * @ingroup kernel + */ + +#ifndef _TARGET_CONFIG_H +#define _TARGET_CONFIG_H + +#include "los_typedef.h" +#include "stm32l4xx.h" + + +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif /* __cplusplus */ +#endif /* __cplusplus */ + +#define LOSCFG_CORTEX_M4 + +/*============================================================================= + System clock module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * System clock (unit: HZ) + */ +#define OS_SYS_CLOCK (SystemCoreClock) + +/** + * @ingroup los_config + * Number of Ticks in one second + */ +#define LOSCFG_BASE_CORE_TICK_PER_SECOND (1000UL) + +/** + * @ingroup los_config + * External configuration item for timer tailoring + */ +#define LOSCFG_BASE_CORE_TICK_HW_TIME NO + +/** + * @ingroup los_config + * Configuration liteos kernel tickless + */ +#define LOSCFG_KERNEL_TICKLESS NO + +/*============================================================================= + Hardware interrupt module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for hardware interrupt tailoring + */ +#define LOSCFG_PLATFORM_HWI YES + +/** + * @ingroup los_config + * Maximum number of used hardware interrupts, including Tick timer interrupts. + */ +#define LOSCFG_PLATFORM_HWI_LIMIT 96 + + +/*============================================================================= + Task module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Default task priority + */ +#define LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO 10 + +/** + * @ingroup los_config + * Maximum supported number of tasks except the idle task rather than the number of usable tasks + */ +#define LOSCFG_BASE_CORE_TSK_LIMIT 15 // max num task + +/** + * @ingroup los_config + * Size of the idle task stack + */ +#define LOSCFG_BASE_CORE_TSK_IDLE_STACK_SIZE (0x500U) // IDLE task stack + +/** + * @ingroup los_config + * Default task stack size + */ +#define LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE (0x2D0U) // default stack + +/** + * @ingroup los_config + * Minimum stack size. + */ +#define LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE (0x130U) + +/** + * @ingroup los_config + * Configuration item for task Robin tailoring + */ +#define LOSCFG_BASE_CORE_TIMESLICE YES + +/** + * @ingroup los_config + * Longest execution time of tasks with the same priorities + */ +#define LOSCFG_BASE_CORE_TIMESLICE_TIMEOUT 10 + +/** + * @ingroup los_config + * Configuration item for task (stack) monitoring module tailoring + */ +#define LOSCFG_BASE_CORE_TSK_MONITOR YES + +/** + * @ingroup los_config + * Configuration item for task perf task filter hook + */ +#define LOSCFG_BASE_CORE_EXC_TSK_SWITCH YES + +/** + * @ingroup los_config + * Configuration item for performance moniter unit + */ +#define OS_INCLUDE_PERF YES + +/** + * @ingroup los_config + * Define a usable task priority.Highest task priority. + */ +#define LOS_TASK_PRIORITY_HIGHEST 0 + +/** + * @ingroup los_config + * Define a usable task priority.Lowest task priority. + */ +#define LOS_TASK_PRIORITY_LOWEST 31 + + +/*============================================================================= + Semaphore module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for semaphore module tailoring + */ +#define LOSCFG_BASE_IPC_SEM YES + +/** + * @ingroup los_config + * Maximum supported number of semaphores + */ +#define LOSCFG_BASE_IPC_SEM_LIMIT 20 // the max sem-numb + + +/*============================================================================= + Mutex module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for mutex module tailoring + */ +#define LOSCFG_BASE_IPC_MUX YES + +/** + * @ingroup los_config + * Maximum supported number of mutexes + */ +#define LOSCFG_BASE_IPC_MUX_LIMIT 20 // the max mutex-num + + +/*============================================================================= + Queue module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for queue module tailoring + */ +#define LOSCFG_BASE_IPC_QUEUE YES + +/** + * @ingroup los_config + * Maximum supported number of queues rather than the number of usable queues + */ +#define LOSCFG_BASE_IPC_QUEUE_LIMIT 10 //the max queue-numb + + +/*============================================================================= + Software timer module configuration +=============================================================================*/ + +#if (LOSCFG_BASE_IPC_QUEUE == YES) +/** + * @ingroup los_config + * Configuration item for software timer module tailoring + */ +#define LOSCFG_BASE_CORE_SWTMR YES + +#define LOSCFG_BASE_CORE_TSK_SWTMR_STACK_SIZE LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE + +#define LOSCFG_BASE_CORE_SWTMR_TASK YES + +#define LOSCFG_BASE_CORE_SWTMR_ALIGN YES +#if(LOSCFG_BASE_CORE_SWTMR == NO && LOSCFG_BASE_CORE_SWTMR_ALIGN == YES) + #error "swtmr align first need support swmtr, should make LOSCFG_BASE_CORE_SWTMR = YES" +#endif + +/** + * @ingroup los_config + * Maximum supported number of software timers rather than the number of usable software timers + */ +#define LOSCFG_BASE_CORE_SWTMR_LIMIT 16 // the max SWTMR numb + +/** + * @ingroup los_config + * Max number of software timers ID + */ +#define OS_SWTMR_MAX_TIMERID ((65535/LOSCFG_BASE_CORE_SWTMR_LIMIT) * LOSCFG_BASE_CORE_SWTMR_LIMIT) + +/** + * @ingroup los_config + * Maximum size of a software timer queue + */ +#define OS_SWTMR_HANDLE_QUEUE_SIZE (LOSCFG_BASE_CORE_SWTMR_LIMIT + 0) + +/** + * @ingroup los_config + * Minimum divisor of software timer multiple alignment + */ +#define LOS_COMMON_DIVISOR 10 +#endif + + +/*============================================================================= + Memory module configuration +=============================================================================*/ + +#define LOSCFG_HEAP_IMPROVED YES +#define LOSCFG_MEM_STATISTICS YES +#define LOSCFG_CONFIG_CM_TLSF + +/** + * @ingroup los_config + * Configuration module tailoring of mem node integrity checking + */ +#define LOSCFG_BASE_MEM_NODE_INTEGRITY_CHECK YES + +/** + * @ingroup los_config + * Configuration module tailoring of mem node size checking + */ +#define LOSCFG_BASE_MEM_NODE_SIZE_CHECK YES + +#define LOSCFG_MEMORY_BESTFIT YES + +/** + * @ingroup los_config + * Configuration module tailoring of more mempry pool checking + */ +#define LOSCFG_MEM_MUL_POOL YES + +/** + * @ingroup los_config + * Number of memory checking blocks + */ +#define OS_SYS_MEM_NUM 20 + +/** + * @ingroup los_config + * Configuration module tailoring of slab memory + */ +#define LOSCFG_KERNEL_MEM_SLAB YES + + +/*============================================================================= + fw Interface configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for the monitoring of task communication + */ +#define LOSCFG_COMPAT_CMSIS_FW YES + + +/*============================================================================= + others +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration system wake-up info to open + */ +#define OS_SR_WAKEUP_INFO YES + +/** + * @ingroup los_config + * Configuration CMSIS_OS_VER + */ +#define CMSIS_OS_VER 2 + + +/*============================================================================= + Exception module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for exception tailoring + */ +#define LOSCFG_PLATFORM_EXC NO + + +/*============================================================================= + Runstop module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for runstop module tailoring + */ +#define LOSCFG_KERNEL_RUNSTOP NO + + +/*============================================================================= + track configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for track + */ +#define LOSCFG_BASE_MISC_TRACK NO + +/** + * @ingroup los_config + * Max count of track items + */ +#define LOSCFG_BASE_MISC_TRACK_MAX_COUNT 1024 + +/*============================================================================= + VFS module configuration +=============================================================================*/ + +/** + * @ingroup los_config + * Configuration item for enabling LiteOS VFS + */ +#ifndef LOSCFG_ENABLE_VFS +#define LOSCFG_ENABLE_VFS YES +#endif + +#ifdef __cplusplus +#if __cplusplus +} +#endif /* __cplusplus */ +#endif /* __cplusplus */ + + +#endif /* _TARGET_CONFIG_H */ diff --git a/targets/STM32L476RG_NB476/Src/LWM2M_Task.c b/targets/STM32L476RG_NB476/Src/LWM2M_Task.c new file mode 100644 index 000000000..f87758550 --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/LWM2M_Task.c @@ -0,0 +1,93 @@ +#include +#include +#include + +#include "los_typedef.h" +#include "los_task.h" +#include +#include +#include + +/* LWM2M服务器相关配置 */ +#define cn_endpoint_id "coap_001" +#define cn_app_server "119.3.250.80" +#define cn_app_port "5683" + +//if your command is very fast,please use a queue here--TODO +#define cn_app_rcv_buf_len 128 +static int8_t s_rcv_buffer[cn_app_rcv_buf_len]; +static int s_rcv_datalen; +static osal_semp_t s_rcv_sync; + + + +//use this function to push all the message to the buffer +static int app_msg_deal(void *msg, int len) +{ + int ret = -1; + + if(len <= cn_app_rcv_buf_len) + { + memcpy(s_rcv_buffer,msg,len); + s_rcv_datalen = len; + + osal_semp_post(s_rcv_sync); + + ret = 0; + + } + return ret; +} + + +int task2(void *args) +{ + int* handle = NULL; + oc_config_param_t oc_param; + char Temp[2] = {00, 22}; + + memset(&oc_param,0,sizeof(oc_param)); + + oc_param.app_server.address = cn_app_server; + oc_param.app_server.port = cn_app_port; + oc_param.app_server.ep_id = cn_endpoint_id; + oc_param.boot_mode = en_oc_boot_strap_mode_factory; + oc_param.rcv_func = app_msg_deal; + + handle = oc_coap_config(&oc_param); + if (NULL == handle) + { + return NULL; + } + else + { + printf("start send message to SDP server!\r\n"); + } + while(1) + { + oc_coap_report(handle, Temp, 2); + osal_task_sleep(60*1000); + + } +} + +int Creat_task2() +{ + int ret = -1; + UINT32 uwRet = LOS_OK; + UINT32 handle; + TSK_INIT_PARAM_S task2_init_param; + + memset (&task2_init_param, 0, sizeof (TSK_INIT_PARAM_S)); + task2_init_param.uwArg = (unsigned int)NULL; + task2_init_param.usTaskPrio = 2; + task2_init_param.pcName =(char *) "task2"; + task2_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task2; + task2_init_param.uwStackSize = 0x1000; + uwRet = LOS_TaskCreate(&handle, &task2_init_param); + if(LOS_OK == uwRet){ + ret = 0; + } + printf("Task2 init success!!\r\n"); + return ret; +} diff --git a/targets/STM32L476RG_NB476/Src/dwt.c b/targets/STM32L476RG_NB476/Src/dwt.c new file mode 100644 index 000000000..cafff589a --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/dwt.c @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "dwt.h" + +static uint32_t cpuclkfeq; + +void dwt_delay_init(uint32_t clk) +{ + cpuclkfeq = clk; + DEM_CR |= DEM_CR_TRCENA; + //DWT_CYCCNT = 0u; + DWT_CR |= DWT_CR_CYCCNTENA; +} + +void delayus(uint32_t usec) + +{ + uint32_t startts, endts, ts; + UINT32 uwIntSave; + startts = DWT_CYCCNT; + + ts = usec * (cpuclkfeq / (1000 * 1000)); + endts = startts + ts; + uwIntSave = LOS_IntLock(); + if(endts > startts) + { + while(DWT_CYCCNT < endts); + } + else + { + while(DWT_CYCCNT > endts); + while(DWT_CYCCNT < endts); + } + (VOID)LOS_IntRestore(uwIntSave); +} + +void delay10ms(__IO uint32_t nTime) +{ + delayus(1000 * nTime); +} diff --git a/targets/STM32L476RG_NB476/Src/flash_adaptor.c b/targets/STM32L476RG_NB476/Src/flash_adaptor.c new file mode 100644 index 000000000..90a0a4d0c --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/flash_adaptor.c @@ -0,0 +1,122 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "flash_adaptor.h" +#include "hal_spi_flash.h" +#include +#include +#include +#include +#include "common.h" + +#define FLASH_BLOCK_SIZE 0x1000 +#define FLASH_BLOCK_MASK 0xfff + + +int flash_adaptor_write(uint32_t offset, const uint8_t *buffer, uint32_t len) +{ + int ret = ERR; + uint8_t *block_buff; + + if((NULL == buffer) || (0 == len) || (len > FLASH_BLOCK_SIZE) + || ((offset & FLASH_BLOCK_MASK))) + { + HAL_OTA_LOG("invalid param len %ld, offset %ld", len, offset); + return ERR; + } + + if (len == FLASH_BLOCK_SIZE) + { + ret = hal_spi_flash_erase_write(buffer, FLASH_BLOCK_SIZE, offset); + if(ret != OK) + { + HAL_OTA_LOG("hal_ota_write_flash fail offset %lu, len %u", offset, FLASH_BLOCK_SIZE); + } + return ret; + } + + block_buff = osal_malloc(FLASH_BLOCK_SIZE); + if(NULL == block_buff) + { + HAL_OTA_LOG("atiny_malloc fail"); + return ERR; + } + + ret = hal_spi_flash_read(block_buff + len, FLASH_BLOCK_SIZE - len, offset + len); + if(ret != OK) + { + HAL_OTA_LOG("hal_spi_flash_read fail offset %lu, len %lu", offset + len, FLASH_BLOCK_SIZE - len); + goto EXIT; + } + (void)memcpy(block_buff, buffer, len); + ret = hal_spi_flash_erase_write(block_buff, FLASH_BLOCK_SIZE, offset); + if(ret != OK) + { + HAL_OTA_LOG("hal_ota_write_flash fail offset %lu, len %u", offset, FLASH_BLOCK_SIZE); + } +EXIT: + osal_free(block_buff); + return ret; +} + + + +void flash_adaptor_init(void) +{ + hal_spi_flash_config(); +} + +int flash_adaptor_write_mqtt_info(const void *buffer, uint32_t len) +{ + if(len > MQTT_INFO_SIZE) + { + HAL_OTA_LOG("err offset len %lu", len); + return ERR; + } + + return flash_adaptor_write(MQTT_INFO_ADDR, (const uint8_t *)buffer, len); +} + +int flash_adaptor_read_mqtt_info(void *buffer, uint32_t len) +{ + if(len > MQTT_INFO_SIZE) + { + HAL_OTA_LOG("err offset len %lu", len); + return ERR; + } + return hal_spi_flash_read(buffer, len, MQTT_INFO_ADDR); +} + + + diff --git a/targets/STM32L476RG_NB476/Src/gpio.c b/targets/STM32L476RG_NB476/Src/gpio.c new file mode 100644 index 000000000..a04cdb6cf --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/gpio.c @@ -0,0 +1,91 @@ +/** + ****************************************************************************** + * File Name : gpio.c + * Description : This file provides code for the configuration + * of all used GPIO pins. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "gpio.h" +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/*----------------------------------------------------------------------------*/ +/* Configure GPIO */ +/*----------------------------------------------------------------------------*/ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** Configure pins as + * Analog + * Input + * Output + * EVENT_OUT + * EXTI +*/ +void MX_GPIO_Init(void) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(NB_EN_GPIO_Port, NB_EN_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : PCPin PCPin PCPin PCPin + PCPin */ + GPIO_InitStruct.Pin = DHT11_DATA_Pin|KEY4_Pin|KEY3_Pin|KEY2_Pin + |KEY1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = LED_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = NB_RI_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(NB_RI_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : PtPin */ + GPIO_InitStruct.Pin = NB_EN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(NB_EN_GPIO_Port, &GPIO_InitStruct); + +} + +/* USER CODE BEGIN 2 */ + +/* USER CODE END 2 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/i2c.c b/targets/STM32L476RG_NB476/Src/i2c.c new file mode 100644 index 000000000..a98f99b5b --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/i2c.c @@ -0,0 +1,118 @@ +/** + ****************************************************************************** + * File Name : I2C.c + * Description : This file provides code for the configuration + * of the I2C instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "i2c.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +I2C_HandleTypeDef hi2c1; + +/* I2C1 init function */ +void MX_I2C1_Init(void) +{ + + hi2c1.Instance = I2C1; + hi2c1.Init.Timing = 0x10909CEC; + hi2c1.Init.OwnAddress1 = 0; + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c1.Init.OwnAddress2 = 0; + hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + +} + +void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(i2cHandle->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**I2C1 GPIO Configuration + PB6 ------> I2C1_SCL + PB7 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = OLED_SCL_Pin|OLED_SDA_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* I2C1 clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } +} + +void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) +{ + + if(i2cHandle->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspDeInit 0 */ + + /* USER CODE END I2C1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C1_CLK_DISABLE(); + + /**I2C1 GPIO Configuration + PB6 ------> I2C1_SCL + PB7 ------> I2C1_SDA + */ + HAL_GPIO_DeInit(GPIOB, OLED_SCL_Pin|OLED_SDA_Pin); + + /* USER CODE BEGIN I2C1_MspDeInit 1 */ + + /* USER CODE END I2C1_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/main.c b/targets/STM32L476RG_NB476/Src/main.c new file mode 100644 index 000000000..cb4b99459 --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/main.c @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ +#include "main.h" +#include "sys_init.h" +#include "mem.h" + +#include "los_base.h" +#include "los_task.ph" +#include "los_typedef.h" +#include "los_sys.h" + +/*****Private includes******/ +#include "i2c.h" +#include "usart.h" +#include "rtc.h" +#include "gpio.h" +#include "stdio.h" +#include "oled.h" +#include "bmp.h" +#include "dht11.h" +/***************************/ + +#if defined (__CC_ARM) +extern char Image$$RW_IRAM1$$ZI$$Limit []; +extern char Image$$ARM_LIB_STACKHEAP$$Base []; +#elif defined (__GNUC__) +extern char __los_heap_addr_start__ []; +extern char __los_heap_addr_end__ []; +#else +#error "fix me" +#endif + +const struct phys_mem system_phys_mem [] = + { +#if defined (__CC_ARM) + { Image$$RW_IRAM1$$ZI$$Limit, Image$$ARM_LIB_STACKHEAP$$Base }, +#elif defined (__GNUC__) + {(unsigned long) __los_heap_addr_start__,(unsigned long) __los_heap_addr_end__ }, +#else +#error "fix me" +#endif + { 0, 0 } + }; + +VOID HardWare_Init(VOID) +{ + HAL_Init(); + /* Configure the system clock */ + SystemClock_Config(); + MX_GPIO_Init(); + MX_I2C1_Init(); + MX_RTC_Init(); + dwt_delay_init(SystemCoreClock); + /* Init OLED */ + OLED_Init(); + OLED_Clear(); + OLED_ShowCHinese(9, 0, 0);//Zhu + OLED_ShowCHinese(27, 0, 1);//You + OLED_ShowCHinese(45, 0, 2);//Peng + OLED_ShowCHinese(63, 0, 3);//Wu + OLED_ShowCHinese(81, 0, 4);//Lian + OLED_ShowCHinese(99, 0, 5);//Wang + OLED_ShowCHinese(36, 2, 6);//Da + OLED_ShowCHinese(54, 2, 7);//Jiang + OLED_ShowCHinese(72, 2, 8);//Tang + OLED_ShowString(18, 4, "L476_LiTeOS", 16); + OLED_ShowString(48, 6, "NBIOT", 16); + //delayus(1000); + /* Init DHT11 */ + DHT11_Init(); + +} + +extern int link_main(void *args); +static int link_test() +{ + int ret = -1; + UINT32 uwRet = LOS_OK; + UINT32 handle; + TSK_INIT_PARAM_S task_init_param; + + memset (&task_init_param, 0, sizeof (TSK_INIT_PARAM_S)); + task_init_param.uwArg = (unsigned int)NULL; + task_init_param.usTaskPrio = 2; + task_init_param.pcName =(char *) "link_main"; + task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)link_main; + task_init_param.uwStackSize = 0x1000; + uwRet = LOS_TaskCreate(&handle, &task_init_param); + if(LOS_OK == uwRet){ + ret = 0; + } + return ret; +} + +int main(void) +{ + UINT32 uwRet = LOS_OK; + HardWare_Init(); + uwRet = LOS_KernelInit(); + if (uwRet != LOS_OK) + { + return LOS_NOK; + } + + extern void shell_uart_init(int baud); + shell_uart_init(115200); + + link_test(); + + (void)LOS_Start(); + return 0; +} diff --git a/targets/STM32L476RG_NB476/Src/main.c.back.c b/targets/STM32L476RG_NB476/Src/main.c.back.c new file mode 100644 index 000000000..2ab2e481c --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/main.c.back.c @@ -0,0 +1,429 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "i2c.h" +#include "usart.h" +#include "rtc.h" +#include "gpio.h" +#include "stdio.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "oled.h" +#include "bmp.h" +#include "dht11.h" +#include "sys_init.h" +#include "mem.h" + +#include "los_base.h" +#include "los_task.ph" +#include "los_typedef.h" +#include "los_sys.h" +#include +#include + +#if defined (__CC_ARM) +extern char Image$$RW_IRAM1$$ZI$$Limit []; +extern char Image$$ARM_LIB_STACKHEAP$$Base []; +#elif defined (__GNUC__) +extern char __los_heap_addr_start__ []; +extern char __los_heap_addr_end__ []; +#else +#error "fix me" +#endif + +const struct phys_mem system_phys_mem [] = + { +#if defined (__CC_ARM) + { Image$$RW_IRAM1$$ZI$$Limit, Image$$ARM_LIB_STACKHEAP$$Base }, +#elif defined (__GNUC__) + {(unsigned long) __los_heap_addr_start__,(unsigned long) __los_heap_addr_end__ }, +#else +#error "fix me" +#endif + { 0, 0 } + }; + + + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ +VOID HardWare_Init(VOID); +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +DHT11_Data_TypeDef dht11; +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +static void MX_NVIC_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +/* shell 命令 */ +static int shell_Temp(int argc,const char *argv[]){ + printf("temp = %.2f ; humi = %.2f\r\n",dht11.temperature,dht11.humidity); + return 0; +} +OSSHELL_EXPORT_CMD(shell_Temp,"readTemp","readTemp"); + + +/* 温度检测相关 */ +static void DHT11timer_callback(void *arg) +{ + DHT11_Read_TempAndHumidity(&dht11); +} + + +/* 该任务用于初始化所有外设以及NBIOT + * + */ +int task1(void *args) +{ + + osal_init(); //如果不调用该函数,printf无法使用 + +/* 初始化软件定时器,用于DHT11采集温湿度信息 + * + */ +#if CONFIG_STIMER_ENABLE + + stimer_init(); + +#endif + +/* 初始化shell,可以自定义各种指令,推荐使用MobaXterm_Personal_10.4软件,普通的串口助手会乱码 + * + */ +#if CONFIG_SHELL_ENABLE + + shell_init(); +#endif + +#define CONFIG_DRIVER_ENABLE 1 +/* 初始化设备注册框架用于注册at指令使用的串口 + * + */ +#if CONFIG_DRIVER_ENABLE + #include + ///< install the driver framework for the link + los_driv_init(); +#endif + +#define CONFIG_AT_ENABLE 1 +/* 初始化AT框架用于NBiot模块 + * + */ +#if CONFIG_AT_ENABLE + #include + #include + extern bool_t uart_at_init(int baud); + + + #ifndef CONFIG_AT_BAUDRATE + #define CONFIG_AT_BAUDRATE 9600 + #endif + + #ifndef CONFIG_AT_DEVICENAME + #define CONFIG_AT_DEVICENAME "atdev" + #endif + + + ///< install the at framework for the link + uart_at_init(CONFIG_AT_BAUDRATE); + at_init(CONFIG_AT_DEVICENAME); +#endif + + +//////////////////////////// OC LWM2M /////// ///////////////////////////// +#if CONFIG_OC_LWM2M_ENABLE + #include + oc_lwm2m_init(); + + #if CONFIG_OC_LWM2M_AGENT_ENABLE + #include + oc_lwm2m_install_agent(); + #endif + + #if CONFIG_OC_LWM2M_BOUDICA150_ENABLE + #include + #define cn_app_bands "5" //bc95电信卡5 + boudica150_init(NULL,NULL,cn_app_bands); + #endif + + #if CONFIG_OC_LWM2M_BOUDICA120_ENABLE + #include + #define cn_app_bands "5" //bc95电信卡5 + oc_lwm2m_imp_init(); + #endif +#endif + +////////////////////////// COAP PROTOCOL ///////////////////////////////// +#ifdef CONFIG_OCCOAP_ENABLE + #include + oc_coap_init(); +#endif + +#if CONFIG_OC_COAP_BOUDICA120_ENABLE + #include + oc_coap_imp_init(); +#endif + + /* 创建一个定时器,用于DHT11采集温湿度 + * + */ + stimer_create("DHT11timer",DHT11timer_callback,NULL,1*1000,cn_stimer_flag_start); + + printf("task1 init succsee!\r\n"); + printf("start init task2\r\n"); + int Creat_task2(); + Creat_task2(); + while (1) + { + HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); + LOS_TaskDelay(2000); + + } +} + +static int Creat_task1() +{ + int ret = -1; + UINT32 uwRet = LOS_OK; + UINT32 handle; + TSK_INIT_PARAM_S task1_init_param; + + memset (&task1_init_param, 0, sizeof (TSK_INIT_PARAM_S)); + task1_init_param.uwArg = (unsigned int)NULL; + task1_init_param.usTaskPrio = 2; + task1_init_param.pcName =(char *) "task1"; + task1_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)task1; + task1_init_param.uwStackSize = 0x1000; + uwRet = LOS_TaskCreate(&handle, &task1_init_param); + if(LOS_OK == uwRet){ + ret = 0; + } + return ret; +} +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + UINT32 uwRet = LOS_OK; + /* USER CODE END 1 */ + + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); //这里配置了中断分组以及系统时钟 + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_I2C1_Init(); + //MX_LPUART1_UART_Init(); + MX_RTC_Init(); + //MX_USART1_UART_Init(); + //MX_USART3_UART_Init(); + HardWare_Init(); + /* Initialize interrupts */ + //MX_NVIC_Init(); + /* USER CODE BEGIN 2 */ + //任务创建 + HardWare_Init(); + uwRet = LOS_KernelInit(); + if (uwRet != LOS_OK) + { + return LOS_NOK; + } + + extern void shell_uart_init(int baud); + shell_uart_init(115200); + //printf("Hello World! This is LiteOS!\r\n"); + + Creat_task1(); + + (void)LOS_Start(); + return 0; + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Configure LSE Drive Capability + */ + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 1; + RCC_OscInitStruct.PLL.PLLN = 20; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1 + |RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_LPUART1 + |RCC_PERIPHCLK_I2C1; + PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1; + PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1; + PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; + PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Configure the main internal regulator output voltage + */ + if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } +} + +/** + * @brief NVIC Configuration. + * @retval None + */ +static void MX_NVIC_Init(void) +{ + /* LPUART1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(LPUART1_IRQn, 1, 0); + HAL_NVIC_EnableIRQ(LPUART1_IRQn); +} + +/* USER CODE BEGIN 4 */ +VOID HardWare_Init(VOID) +{ + //初始化延时函数 + dwt_delay_init(SystemCoreClock); + //初始化OLED + OLED_Init(); + OLED_Clear(); + OLED_ShowCHinese(9, 0, 0);//朱 + OLED_ShowCHinese(27, 0, 1);//有 + OLED_ShowCHinese(45, 0, 2);//鹏 + OLED_ShowCHinese(63, 0, 3);//物 + OLED_ShowCHinese(81, 0, 4);//联 + OLED_ShowCHinese(99, 0, 5);//网 + OLED_ShowCHinese(36, 2, 6);//大 + OLED_ShowCHinese(54, 2, 7);//讲 + OLED_ShowCHinese(72, 2, 8);//堂 + OLED_ShowString(18, 4, "L476_LiTeOS", 16); + OLED_ShowString(48, 6, "NBIOT", 16); + //delayus(1000); + //初始化DHT11 + DHT11_Init(); +} +/* USER CODE END 4 */ + + + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(char *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/ota_port.c b/targets/STM32L476RG_NB476/Src/ota_port.c new file mode 100644 index 000000000..09428f04c --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/ota_port.c @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "ota_port.h" +#include "common.h" +#include "flag_manager.h" +#include "upgrade_flag.h" +#include +#include +#include +#include "flash_adaptor.h" +#include "hal_spi_flash.h" + + +static const uint32_t g_flash_base_addrs[] = {OTA_IMAGE_DOWNLOAD_ADDR, OTA_IMAGE_DOWNLOAD_ADDR, OTA_FLAG_ADDR1}; +static const uint32_t g_flash_max_size[] = {OTA_IMAGE_DOWNLOAD_SIZE, OTA_IMAGE_DOWNLOAD_SIZE, FLASH_BLOCK_SIZE}; + +static int hal_check_flash_param(ota_flash_type_e type, int32_t len, uint32_t location) +{ + if (type > OTA_UPDATE_INFO) + { + HAL_OTA_LOG("err type %d", type); + return ERR; + } + + if(len > g_flash_max_size[type]) + { + HAL_OTA_LOG("err offset %lu, len %lu", location, len); + return ERR; + } + + return OK; +} + +static int hal_read_flash(ota_flash_type_e type, void *buf, int32_t len, uint32_t location) +{ + if (hal_check_flash_param(type, len, location) != OK) + { + return ERR; + } + + return hal_spi_flash_read(buf, len, g_flash_base_addrs[type] + location); +} + +static int hal_write_flash(ota_flash_type_e type, const void *buf, int32_t len, uint32_t location) +{ + if (hal_check_flash_param(type, len, location) != OK) + { + return ERR; + } + + return flash_adaptor_write(g_flash_base_addrs[type] + location, (const uint8_t *)buf, len); +} + +void hal_init_ota(void) +{ + flash_adaptor_init(); +} + + +void hal_get_ota_opt(ota_opt_s *opt) +{ + if (opt == NULL) + { + HAL_OTA_LOG("opt NULL"); + return; + } + + memset(opt, 0, sizeof(*opt)); + opt->read_flash = hal_read_flash; + opt->write_flash = hal_write_flash; + opt->flash_block_size = FLASH_BLOCK_SIZE; +} + + + diff --git a/targets/STM32L476RG_NB476/Src/rtc.c b/targets/STM32L476RG_NB476/Src/rtc.c new file mode 100644 index 000000000..fdac41b89 --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/rtc.c @@ -0,0 +1,86 @@ +/** + ****************************************************************************** + * File Name : RTC.c + * Description : This file provides code for the configuration + * of the RTC instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "rtc.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +RTC_HandleTypeDef hrtc; + +/* RTC init function */ +void MX_RTC_Init(void) +{ + + /** Initialize RTC Only + */ + hrtc.Instance = RTC; + hrtc.Init.HourFormat = RTC_HOURFORMAT_24; + hrtc.Init.AsynchPrediv = 127; + hrtc.Init.SynchPrediv = 255; + hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; + hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; + hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; + hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; + if (HAL_RTC_Init(&hrtc) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + +} + +void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) +{ + + if(rtcHandle->Instance==RTC) + { + /* USER CODE BEGIN RTC_MspInit 0 */ + + /* USER CODE END RTC_MspInit 0 */ + /* RTC clock enable */ + __HAL_RCC_RTC_ENABLE(); + /* USER CODE BEGIN RTC_MspInit 1 */ + + /* USER CODE END RTC_MspInit 1 */ + } +} + +void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle) +{ + + if(rtcHandle->Instance==RTC) + { + /* USER CODE BEGIN RTC_MspDeInit 0 */ + + /* USER CODE END RTC_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_RTC_DISABLE(); + /* USER CODE BEGIN RTC_MspDeInit 1 */ + + /* USER CODE END RTC_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/stm32l4xx_hal_msp.c b/targets/STM32L476RG_NB476/Src/stm32l4xx_hal_msp.c new file mode 100644 index 000000000..db41b739d --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/stm32l4xx_hal_msp.c @@ -0,0 +1,84 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : stm32l4xx_hal_msp.c + * Description : This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN Define */ + +/* USER CODE END Define */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN Macro */ + +/* USER CODE END Macro */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* External functions --------------------------------------------------------*/ +/* USER CODE BEGIN ExternalFunctions */ + +/* USER CODE END ExternalFunctions */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +/** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/stm32l4xx_it.c b/targets/STM32L476RG_NB476/Src/stm32l4xx_it.c new file mode 100644 index 000000000..9ce9a7f0a --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/stm32l4xx_it.c @@ -0,0 +1,190 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l4xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern UART_HandleTypeDef hlpuart1; +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32L4xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32l4xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles LPUART1 global interrupt. + */ +void LPUART1_IRQHandler(void) +{ + /* USER CODE BEGIN LPUART1_IRQn 0 */ + + /* USER CODE END LPUART1_IRQn 0 */ + HAL_UART_IRQHandler(&hlpuart1); + /* USER CODE BEGIN LPUART1_IRQn 1 */ + + /* USER CODE END LPUART1_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/sys.c b/targets/STM32L476RG_NB476/Src/sys.c new file mode 100644 index 000000000..1cc132eaa --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/sys.c @@ -0,0 +1,37 @@ +/** + ****************************************************************************** + * File Name : SYS.c + * Description : This file provides code for the configuration + * of the SYS instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "sys.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* SYS init function */ +void MX_SYS_Init(void) +{ + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/sys_init.c b/targets/STM32L476RG_NB476/Src/sys_init.c new file mode 100644 index 000000000..6f7fd3df4 --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/sys_init.c @@ -0,0 +1,160 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "sys_init.h" + + +uint32_t HAL_GetTick(void) +{ + return (uint32_t)LOS_TickCountGet(); +} + +/** + * @brief This function is executed in case of error occurrence. + * @param file: The file name as string. + * @param line: The line in file as a number. + * @retval None + */ +void _Error_Handler(char *file, int line) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + while(1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + + + + + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t* file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + + +/* + * atiny_adapter user interface + */ +void atiny_usleep(unsigned long usec) +{ + delayus((uint32_t)usec); +} + +int atiny_random(void *output, size_t len) +{ + return hal_rng_generate_buffer(output, len); +} + +void atiny_reboot(void) +{ + HAL_NVIC_SystemReset(); +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Configure LSE Drive Capability + */ + HAL_PWR_EnableBkUpAccess(); + __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.LSEState = RCC_LSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 1; + RCC_OscInitStruct.PLL.PLLN = 20; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7; + RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; + RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1 + |RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_LPUART1 + |RCC_PERIPHCLK_I2C1; + PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1; + PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1; + PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; + PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + /** Configure the main internal regulator output voltage + */ + if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } +} diff --git a/targets/STM32L476RG_NB476/Src/system_stm32l4xx.c b/targets/STM32L476RG_NB476/Src/system_stm32l4xx.c new file mode 100644 index 000000000..1db59ec93 --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/system_stm32l4xx.c @@ -0,0 +1,337 @@ +/** + ****************************************************************************** + * @file system_stm32l4xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32l4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * After each device reset the MSI (4 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32l4xx.s" file, to + * configure the system clock before to branch to main program. + * + * This file configures the system clock as follows: + *============================================================================= + *----------------------------------------------------------------------------- + * System Clock source | MSI + *----------------------------------------------------------------------------- + * SYSCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * HCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB1 Prescaler | 1 + *----------------------------------------------------------------------------- + * APB2 Prescaler | 1 + *----------------------------------------------------------------------------- + * PLL_M | 1 + *----------------------------------------------------------------------------- + * PLL_N | 8 + *----------------------------------------------------------------------------- + * PLL_P | 7 + *----------------------------------------------------------------------------- + * PLL_Q | 2 + *----------------------------------------------------------------------------- + * PLL_R | 2 + *----------------------------------------------------------------------------- + * PLLSAI1_P | NA + *----------------------------------------------------------------------------- + * PLLSAI1_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI1_R | NA + *----------------------------------------------------------------------------- + * PLLSAI2_P | NA + *----------------------------------------------------------------------------- + * PLLSAI2_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI2_R | NA + *----------------------------------------------------------------------------- + * Require 48MHz for USB OTG FS, | Disabled + * SDIO and RNG clock | + *----------------------------------------------------------------------------- + *============================================================================= + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx_system + * @{ + */ + +/** @addtogroup STM32L4xx_System_Private_Includes + * @{ + */ + +#include "stm32l4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (MSI_VALUE) + #define MSI_VALUE 4000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = 4000000U; + + const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; + const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; + const uint32_t MSIRangeTable[12] = {100000U, 200000U, 400000U, 800000U, 1000000U, 2000000U, \ + 4000000U, 8000000U, 16000000U, 24000000U, 32000000U, 48000000U}; +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ + +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set MSION bit */ + RCC->CR |= RCC_CR_MSION; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000U; + + /* Reset HSEON, CSSON , HSION, and PLLON bits */ + RCC->CR &= 0xEAF6FFFFU; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x00001000U; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000U; + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*) + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***) + * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) MSI_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 4 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSI_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0U, msirange = 0U, pllvco = 0U, pllr = 2U, pllsource = 0U, pllm = 2U; + + /* Get MSI Range frequency--------------------------------------------------*/ + if((RCC->CR & RCC_CR_MSIRGSEL) == RESET) + { /* MSISRANGE from RCC_CSR applies */ + msirange = (RCC->CSR & RCC_CSR_MSISRANGE) >> 8U; + } + else + { /* MSIRANGE from RCC_CR applies */ + msirange = (RCC->CR & RCC_CR_MSIRANGE) >> 4U; + } + /*MSI frequency range in HZ*/ + msirange = MSIRangeTable[msirange]; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case 0x00: /* MSI used as system clock source */ + SystemCoreClock = msirange; + break; + + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4U) + 1U ; + + switch (pllsource) + { + case 0x02: /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm); + break; + + case 0x03: /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm); + break; + + default: /* MSI used as PLL clock source */ + pllvco = (msirange / pllm); + break; + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8U); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25U) + 1U) * 2U; + SystemCoreClock = pllvco/pllr; + break; + + default: + SystemCoreClock = msirange; + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/Src/uart_debug.c b/targets/STM32L476RG_NB476/Src/uart_debug.c new file mode 100644 index 000000000..7967584ed --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/uart_debug.c @@ -0,0 +1,150 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "usart.h" + +#include "stm32l4xx.h" +#include +#include + +#include +#include + +#include +#include +#include + +#define CN_RCV_RING_BUFLEN 128 + +static USART_TypeDef* s_pUSART = USART1; +static uint32_t s_uwIRQn = USART1_IRQn; + +static bool_t s_uart_init = false; + +/* USART1 init function */ +UART_HandleTypeDef uart_debug; +static tag_ring_buffer_t s_uartdebug_rcv_ring; +static unsigned char s_uartdebug_rcv_ringmem[CN_RCV_RING_BUFLEN]; +static UINT32 s_uartdebug_rcv_sync; +static void uart_debug_irq(void) +{ + unsigned char value; + if(__HAL_UART_GET_FLAG(&uart_debug, UART_FLAG_RXNE) != RESET) + { + value = (uint8_t)(uart_debug.Instance->RDR & 0x00FF); + ring_buffer_write(&s_uartdebug_rcv_ring,&value,1); + LOS_SemPost(s_uartdebug_rcv_sync); + } + else if (__HAL_UART_GET_FLAG(&uart_debug,UART_FLAG_IDLE) != RESET) + { + __HAL_UART_CLEAR_IDLEFLAG(&uart_debug); + } +} +void shell_uart_init(int baud) +{ + uart_debug.Instance = s_pUSART; + uart_debug.Init.BaudRate = baud; + uart_debug.Init.WordLength = UART_WORDLENGTH_8B; + uart_debug.Init.StopBits = UART_STOPBITS_1; + uart_debug.Init.Parity = UART_PARITY_NONE; + uart_debug.Init.Mode = UART_MODE_TX_RX; + uart_debug.Init.HwFlowCtl = UART_HWCONTROL_NONE; + uart_debug.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&uart_debug) != HAL_OK) + { + return; + } + LOS_HwiCreate(s_uwIRQn, 3, 0, uart_debug_irq, 0); + //__HAL_UART_ENABLE_IT(&uart_debug, UART_IT_IDLE); + __HAL_UART_ENABLE_IT(&uart_debug, UART_IT_RXNE); + + //create the receive buffer and receive sync + extern UINT32 osSemCreate (UINT16 usCount, UINT16 usMaxCount, UINT32 *puwSemHandle); + osSemCreate(0,CN_RCV_RING_BUFLEN,(UINT32 *)&s_uartdebug_rcv_sync); + ring_buffer_init(&s_uartdebug_rcv_ring,s_uartdebug_rcv_ringmem,CN_RCV_RING_BUFLEN,0,0); + s_uart_init = true; + +} + + +/* define fputc */ +#if defined ( __CC_ARM ) || defined ( __ICCARM__ ) /* KEIL and IAR: printf will call fputc to print */ +int fputc(int ch, FILE *f) +{ + HAL_UART_Transmit(&uart_debug, (uint8_t *)&ch, 1, 0xFFFF); + return ch; +} +int fgetc(FILE *f){ + int ret = 0; + unsigned char value; + do + { + if(LOS_OK == LOS_SemPend(s_uartdebug_rcv_sync,LOS_WAIT_FOREVER)) + { + ret = ring_buffer_read(&s_uartdebug_rcv_ring,&value,1); + } + }while(ret <=0); + ret = value; + return ret; +} +#elif defined ( __GNUC__ ) /* GCC: printf will call _write to print */ + + + + +__attribute__((used)) int _write(int fd, char *ptr, int len) +{ + + if(s_uart_init) + { + HAL_UART_Transmit(&uart_debug, (uint8_t *)ptr, len, 0xFFFF); + } + return len; +} +__attribute__((used)) int _read(int fd, char *ptr, int len) +{ + int ret = 0; + unsigned char value; + do + { + if(LOS_OK == LOS_SemPend(s_uartdebug_rcv_sync,LOS_WAIT_FOREVER)) + { + ret = ring_buffer_read(&s_uartdebug_rcv_ring,&value,1); + } + }while(ret <=0); + *(unsigned char *)ptr = value; + return 1; +} + +#endif diff --git a/targets/STM32L476RG_NB476/Src/usart.c b/targets/STM32L476RG_NB476/Src/usart.c new file mode 100644 index 000000000..44d8cd2df --- /dev/null +++ b/targets/STM32L476RG_NB476/Src/usart.c @@ -0,0 +1,237 @@ +/** + ****************************************************************************** + * File Name : USART.c + * Description : This file provides code for the configuration + * of the USART instances. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usart.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +UART_HandleTypeDef hlpuart1; +UART_HandleTypeDef huart1; +UART_HandleTypeDef huart3; + +/* LPUART1 init function */ + +void MX_LPUART1_UART_Init(void) +{ + + hlpuart1.Instance = LPUART1; + hlpuart1.Init.BaudRate = 115200; + hlpuart1.Init.WordLength = UART_WORDLENGTH_8B; + hlpuart1.Init.StopBits = UART_STOPBITS_1; + hlpuart1.Init.Parity = UART_PARITY_NONE; + hlpuart1.Init.Mode = UART_MODE_TX_RX; + hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&hlpuart1) != HAL_OK) + { + Error_Handler(); + } + +} +/* USART1 init function */ + +void MX_USART1_UART_Init(void) +{ + + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + +} +/* USART3 init function */ + +void MX_USART3_UART_Init(void) +{ + + huart3.Instance = USART3; + huart3.Init.BaudRate = 115200; + huart3.Init.WordLength = UART_WORDLENGTH_8B; + huart3.Init.StopBits = UART_STOPBITS_1; + huart3.Init.Parity = UART_PARITY_NONE; + huart3.Init.Mode = UART_MODE_TX_RX; + huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart3.Init.OverSampling = UART_OVERSAMPLING_16; + huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_UART_Init(&huart3) != HAL_OK) + { + Error_Handler(); + } + +} + +void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) +{ + + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(uartHandle->Instance==LPUART1) + { + /* USER CODE BEGIN LPUART1_MspInit 0 */ + + /* USER CODE END LPUART1_MspInit 0 */ + /* LPUART1 clock enable */ + __HAL_RCC_LPUART1_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**LPUART1 GPIO Configuration + PB10 ------> LPUART1_RX + PB11 ------> LPUART1_TX + */ + GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF8_LPUART1; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN LPUART1_MspInit 1 */ + + /* USER CODE END LPUART1_MspInit 1 */ + } + else if(uartHandle->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* USART1 clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + else if(uartHandle->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspInit 0 */ + + /* USER CODE END USART3_MspInit 0 */ + /* USART3 clock enable */ + __HAL_RCC_USART3_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**USART3 GPIO Configuration + PC4 ------> USART3_TX + PC5 ------> USART3_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF7_USART3; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* USER CODE BEGIN USART3_MspInit 1 */ + + /* USER CODE END USART3_MspInit 1 */ + } +} + +void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle) +{ + + if(uartHandle->Instance==LPUART1) + { + /* USER CODE BEGIN LPUART1_MspDeInit 0 */ + + /* USER CODE END LPUART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_LPUART1_CLK_DISABLE(); + + /**LPUART1 GPIO Configuration + PB10 ------> LPUART1_RX + PB11 ------> LPUART1_TX + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11); + + /* LPUART1 interrupt Deinit */ + HAL_NVIC_DisableIRQ(LPUART1_IRQn); + /* USER CODE BEGIN LPUART1_MspDeInit 1 */ + + /* USER CODE END LPUART1_MspDeInit 1 */ + } + else if(uartHandle->Instance==USART1) + { + /* USER CODE BEGIN USART1_MspDeInit 0 */ + + /* USER CODE END USART1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART1_CLK_DISABLE(); + + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); + + /* USER CODE BEGIN USART1_MspDeInit 1 */ + + /* USER CODE END USART1_MspDeInit 1 */ + } + else if(uartHandle->Instance==USART3) + { + /* USER CODE BEGIN USART3_MspDeInit 0 */ + + /* USER CODE END USART3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART3_CLK_DISABLE(); + + /**USART3 GPIO Configuration + PC4 ------> USART3_TX + PC5 ------> USART3_RX + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4|GPIO_PIN_5); + + /* USER CODE BEGIN USART3_MspDeInit 1 */ + + /* USER CODE END USART3_MspDeInit 1 */ + } +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/STM32L476RG_NB476/iot_config.h b/targets/STM32L476RG_NB476/iot_config.h new file mode 100644 index 000000000..b9d5b7b48 --- /dev/null +++ b/targets/STM32L476RG_NB476/iot_config.h @@ -0,0 +1,26 @@ +#define CONFIG_ARCH_CPU_TYPE "armv7-m" +#define CONFIG_UARTAT_RCVMAX 2048 +#define CONFIG_UARTAT_BAUDRATE 9600 +#define CONFIG_UARTAT_DEVNAME "atdev" +#define CONFIG_LITEOS_ENABLE 1 +#define CONFIG_AT_ENABLE 1 +#define CONFIG_AT_DEVNAME "atdev" +#define CONFIG_AT_OOBTABLEN 6 +#define CONFIG_AT_RECVMAXLEN 1024 +#define CONFIG_AT_TASKPRIOR 10 +#define CONFIG_DRIVER_ENABLE 1 +#define CONFIG_LINKLOG_ENABLE 1 +#define CONFIG_LINKQUEUE_ENABLE 1 +#define CONFIG_LINKDEMO_ENABLE 1 +#define CONFIG_STIMER_ENABLE 1 +#define CONFIG_STIMER_STACKSIZE 2048 +#define CONFIG_STIMER_TASKPRIOR 10 +#define CONFIG_OCSERVICES_ENABLE 1 +#define CONFIG_BOUDICA120_ENABLE 1 +#define CONFIG_SHELL_ENABLE 1 +#define CONFIG_SHELL_TASK_STACKSIZE 2048 +#define CONFIG_SHELL_TASK_PRIOR 10 +#define CONFIG_IOT_LINK_CONFIGFILE "iot_config.h" +#define CONFIG_Demo_Agriculture 1 +#define CONFIG_USER_DEMO "use_coap_demo" +#define CONFIG_OCCOAP_ENABLE 1 diff --git a/targets/STM32L476RG_NB476/uart_at/uart_at.c b/targets/STM32L476RG_NB476/uart_at/uart_at.c new file mode 100644 index 000000000..40ae59f74 --- /dev/null +++ b/targets/STM32L476RG_NB476/uart_at/uart_at.c @@ -0,0 +1,270 @@ +/*---------------------------------------------------------------------------- + * Copyright (c) <2016-2018>, + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *---------------------------------------------------------------------------*/ +/*---------------------------------------------------------------------------- + * Notice of Export Control Law + * =============================================== + * Huawei LiteOS may be subject to applicable export control laws and regulations, which might + * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. + * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such + * applicable export control laws and regulations. + *---------------------------------------------------------------------------*/ + +#include "usart.h" +#include "stm32l4xx.h" +#include +#include +#include +#include +#include +#include "sys/fcntl.h" +#include + + +UART_HandleTypeDef uart_at; +static USART_TypeDef* s_pUSART = USART3; +static uint32_t s_uwIRQn = USART3_IRQn; + +#ifndef CONFIG_UARTAT_RCVMAX +#define CONFIG_UARTAT_RCVMAX 1024 //cache a frame +#endif + +#ifndef CONFIG_UARTAT_BAUDRATE +#define CONFIG_UARTAT_BAUDRATE 115200 +#endif + + +#ifndef CONFIG_UARTAT_DEVNAME +#define CONFIG_UARTAT_DEVNAME "atdev" +#endif + +#define CN_RCVMEM_LEN CONFIG_UARTAT_RCVMAX + + +struct atio_cb +{ + unsigned short w_next; //the next position to be write + osal_semp_t rcvsync; //if a frame has been written to the ring, then active it + tag_ring_buffer_t rcvring; + unsigned char rcvbuf[CONFIG_UARTAT_RCVMAX]; + unsigned char rcvringmem[CN_RCVMEM_LEN]; + //for the debug here + unsigned int rframeover; //how many times the frame has been over the max length + unsigned int rframedrop; //how many frame has been droped for memmory + unsigned int sndlen; //how many bytes has been sent + unsigned int rcvlen; //how many bytes has been received + unsigned int sndframe; //how many frame has been sent + unsigned int rcvframe; //how many frame has been received + unsigned int rcvringrst; //how many times the receive ring has been reset +}; +static struct atio_cb g_atio_cb; + + +/******************************************************************************* +function :use this function to deal the uart interrupt +parameters : +instruction :we cached the data in the temp buffer,when the idle interrupt reached, + then we write the data and the length to the ring if the ring has enough + space +*******************************************************************************/ +static void atio_irq(void) +{ + unsigned char value; + unsigned short ringspace; + if(__HAL_UART_GET_FLAG(&uart_at, UART_FLAG_RXNE) != RESET) + { + value = (uint8_t)(uart_at.Instance->RDR & 0x00FF); + g_atio_cb.rcvlen++; + if(g_atio_cb.w_next < CONFIG_UARTAT_RCVMAX) + { + g_atio_cb.rcvbuf[g_atio_cb.w_next] = value; + g_atio_cb.w_next++; + } + else + { + g_atio_cb.rframeover++; + } + } + else if (__HAL_UART_GET_FLAG(&uart_at,UART_FLAG_IDLE) != RESET) + { + __HAL_UART_CLEAR_IDLEFLAG(&uart_at); + ringspace = CN_RCVMEM_LEN - ring_buffer_datalen(&g_atio_cb.rcvring); + if(ringspace < g_atio_cb.w_next) //not enough mem + { + g_atio_cb.rframedrop++; + } + else + { + //write data to the ring buffer:len+data format + ringspace = g_atio_cb.w_next; + ring_buffer_write(&g_atio_cb.rcvring,(unsigned char *)&ringspace,sizeof(ringspace)); + ring_buffer_write(&g_atio_cb.rcvring,g_atio_cb.rcvbuf,ringspace); + (void) osal_semp_post(g_atio_cb.rcvsync); + g_atio_cb.rcvframe++; + } + g_atio_cb.w_next=0; //write from the head + } + else ///< clear the flags + { + __HAL_UART_CLEAR_PEFLAG(&uart_at); + __HAL_UART_CLEAR_FEFLAG(&uart_at); + __HAL_UART_CLEAR_NEFLAG(&uart_at); + __HAL_UART_CLEAR_OREFLAG(&uart_at); + } + + +} + +/******************************************************************************* +function :use this function to initialize the uart +parameters : +instruction : +*******************************************************************************/ +bool_t uart_at_init(void *pri) +{ + //initialize the at controller + (void) memset(&g_atio_cb,0,sizeof(g_atio_cb)); + if(false == osal_semp_create(&g_atio_cb.rcvsync,CN_RCVMEM_LEN,0)) + { + printf("%s:semp create error\n\r",__FUNCTION__); + goto EXIT_SEMP; + } + ring_buffer_init(&g_atio_cb.rcvring,g_atio_cb.rcvringmem,CN_RCVMEM_LEN,0,0); + + uart_at.Instance = s_pUSART; + uart_at.Init.BaudRate = CONFIG_UARTAT_BAUDRATE; + uart_at.Init.WordLength = UART_WORDLENGTH_8B; + uart_at.Init.StopBits = UART_STOPBITS_1; + uart_at.Init.Parity = UART_PARITY_NONE; + uart_at.Init.HwFlowCtl = UART_HWCONTROL_NONE; + uart_at.Init.Mode = UART_MODE_TX_RX; + uart_at.Init.OverSampling = UART_OVERSAMPLING_16; + if(HAL_UART_Init(&uart_at) != HAL_OK) + { + _Error_Handler(__FILE__, __LINE__); + } + __HAL_UART_CLEAR_FLAG(&uart_at,UART_FLAG_TC); + LOS_HwiCreate(s_uwIRQn, 3, 0, atio_irq, 0); + __HAL_UART_ENABLE_IT(&uart_at, UART_IT_IDLE); + __HAL_UART_ENABLE_IT(&uart_at, UART_IT_RXNE); + return true; + +EXIT_SEMP: + return false; +} + +void uart_at_deinit(void *pri) +{ + __HAL_UART_DISABLE(&uart_at); + __HAL_UART_DISABLE_IT(&uart_at, UART_IT_IDLE); + __HAL_UART_DISABLE_IT(&uart_at, UART_IT_RXNE); +} + +/******************************************************************************* +function :use this function to send a frame to the uart +parameters : +instruction : +*******************************************************************************/ +static ssize_t uart_at_send(const char *buf, size_t len,uint32_t timeout) +{ + HAL_UART_Transmit(&uart_at,(unsigned char *)buf,len,timeout); + g_atio_cb.sndlen += len; + g_atio_cb.sndframe ++; + + return len; +} +/******************************************************************************* +function :use this function to read a frame from the uart +parameters : +instruction : +*******************************************************************************/ +static ssize_t uart_at_receive(void *buf,size_t len,uint32_t timeout) +{ + unsigned short cpylen; + unsigned short framelen; + unsigned short readlen; + int32_t ret = 0; + unsigned int lock; + if(osal_semp_pend(g_atio_cb.rcvsync,timeout)) + { + lock = LOS_IntLock(); + readlen = sizeof(framelen); + cpylen = ring_buffer_read(&g_atio_cb.rcvring,(unsigned char *)&framelen,readlen); + if(cpylen != readlen) + { + ring_buffer_reset(&g_atio_cb.rcvring); //bad ring format here + g_atio_cb.rcvringrst++; + } + else + { + if(framelen > len) + { + ring_buffer_reset(&g_atio_cb.rcvring); //bad ring format here + g_atio_cb.rcvringrst++; + } + else + { + readlen = framelen; + cpylen = ring_buffer_read(&g_atio_cb.rcvring,(unsigned char *)buf,readlen); + if(cpylen != framelen) + { + ring_buffer_reset(&g_atio_cb.rcvring); //bad ring format here + g_atio_cb.rcvringrst++; + } + else + { + ret = cpylen; + } + } + } + LOS_IntRestore(lock); + } + return ret; +} + +//make it as the at device here +static ssize_t __at_read (void *pri,size_t offset,void *buf,size_t len, uint32_t timeout) +{ + return uart_at_receive(buf,len, timeout); + +} +static ssize_t __at_write (void *pri, size_t offset,const void *buf,size_t len,uint32_t timeout) +{ + return uart_at_send(buf, len, timeout); + +} + + +static const los_driv_op_t s_at_op = { + + .init = uart_at_init, + .deinit = uart_at_deinit, + .read = __at_read, + .write = __at_write, +}; + +OSDRIV_EXPORT(uart_at_driv,CONFIG_UARTAT_DEVNAME,(los_driv_op_t *)&s_at_op,NULL,O_RDWR); + +