From ba13f6e0220d9a7c95ce10d129865cfef7bf5e5c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sun, 22 May 2022 15:30:38 +0200 Subject: [PATCH] run auto-formatter --- CMakeLists.txt | 202 ++-- bsp_stm32h7_freertos/CMakeLists.txt | 15 +- .../NUCLEO-H743ZI/CMakeLists.txt | 4 +- .../NUCLEO-H743ZI/Inc/app_dhcp.h | 12 +- .../NUCLEO-H743ZI/Inc/app_ethernet.h | 93 +- .../NUCLEO-H743ZI/Inc/boardconfig.h | 6 +- .../NUCLEO-H743ZI/Inc/hardware_init.h | 2 +- .../NUCLEO-H743ZI/Inc/lan8742.h | 638 +++++++------ bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/main.h | 40 +- .../NUCLEO-H743ZI/Inc/stm32h7xx_hal_conf.h | 343 +++---- .../NUCLEO-H743ZI/Inc/stm32h7xx_it.h | 38 +- .../NUCLEO-H743ZI/Inc/stm32h7xx_nucleo.h | 394 ++++---- .../NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_conf.h | 78 +- .../Inc/stm32h7xx_nucleo_errno.h | 66 +- .../NUCLEO-H743ZI/Src/CMakeLists.txt | 18 +- .../NUCLEO-H743ZI/Src/freertos.c | 100 +- .../NUCLEO-H743ZI/Src/hardware_init.cpp | 372 ++++---- .../NUCLEO-H743ZI/Src/lan8742.c | 894 ++++++++---------- .../Src/stm32h7xx_hal_timebase_tim.c | 207 ++-- .../NUCLEO-H743ZI/Src/stm32h7xx_it.c | 188 ++-- .../NUCLEO-H743ZI/Src/stm32h7xx_nucleo.c | 689 ++++++-------- .../NUCLEO-H743ZI/Src/syscalls.c | 140 ++- bsp_stm32h7_freertos/boardtest/CMakeLists.txt | 5 +- bsp_stm32h7_freertos/boardtest/SpiTest.cpp | 30 +- bsp_stm32h7_freertos/boardtest/SpiTest.h | 13 +- bsp_stm32h7_freertos/core/CMakeLists.txt | 6 +- bsp_stm32h7_freertos/core/InitMission.cpp | 322 ++++--- bsp_stm32h7_freertos/core/ObjectFactory.cpp | 130 ++- bsp_stm32h7_freertos/core/ObjectFactory.h | 7 +- .../fsfwconfig/CMakeLists.txt | 13 +- .../fsfwconfig/devices/devAddresses.h | 5 +- .../fsfwconfig/events/subsystemIdRanges.h | 3 +- .../fsfwconfig/ipc/missionMessageTypes.cpp | 12 +- .../fsfwconfig/ipc/missionMessageTypes.h | 9 +- .../fsfwconfig/objects/systemObjectList.h | 14 +- .../pollingSequenceFactory.cpp | 34 +- .../pollingsequence/pollingSequenceFactory.h | 4 +- .../fsfwconfig/returnvalues/classIds.h | 4 +- bsp_stm32h7_freertos/fsfwconfig/tmtc/apid.h | 2 +- bsp_stm32h7_freertos/fsfwconfig/tmtc/pusIds.h | 1 - bsp_stm32h7_freertos/main.cpp | 54 +- bsp_stm32h7_freertos/utility/CMakeLists.txt | 5 +- bsp_stm32h7_freertos/utility/print.c | 7 +- example_common | 2 +- scripts/auto-formatter.sh | 32 + 45 files changed, 2527 insertions(+), 2726 deletions(-) create mode 100755 scripts/auto-formatter.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fa66ed..832b8ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,21 +1,22 @@ -################################################################################ -# CMake support for the Flight Software Framework -# Author: R. Mueller -################################################################################ +# ############################################################################## +# CMake support for the Flight Software Framework Author: R. Mueller +# ############################################################################## -################################################################################ +# ############################################################################## # Pre-Project preparation -################################################################################ +# ############################################################################## cmake_minimum_required(VERSION 3.13) # set(CMAKE_VERBOSE TRUE) set(CMAKE_SCRIPT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(STM32_CMAKE_PATH "${CMAKE_SCRIPT_PATH}/stm32-cmake") +set(STM32_CMAKE_PATH "${CMAKE_SCRIPT_PATH}/stm32-cmake") set(STM32_CUBE_H7_PATH STM32CubeH7) set(STM32_TOOLCHAIN_PATH $ENV{STM32_TOOLCHAIN_PATH}) set(TARGET_TRIPLET "arm-none-eabi") -set(FSFW_OSAL freertos CACHE STRING "OS for the FSFW") +set(FSFW_OSAL + freertos + CACHE STRING "OS for the FSFW") set(STM32_ADD_NETWORKING_CODE ON) set(FSFW_HAL_ADD_STM32H7 ON) @@ -24,21 +25,20 @@ set(CMAKE_TOOLCHAIN_FILE ${STM32_CMAKE_PATH}/cmake/stm32_gcc.cmake) # Project Name project(fsfw-example-stm32h7-freertos ASM C CXX) -################################################################################ +# ############################################################################## # Pre-Sources preparation -################################################################################ +# ############################################################################## # Specify the C++ standard -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) - set(FSFW_OSAL "freertos") set(TGT_BSP "arm/stm32h743zi-nucleo") set(FREERTOS_NAMESPACE FreeRTOS::STM32::H7::M7) # Set names and variables -set(TARGET_NAME ${CMAKE_PROJECT_NAME}) +set(TARGET_NAME ${CMAKE_PROJECT_NAME}) set(LIB_FSFW_NAME fsfw) # Set path names @@ -52,29 +52,41 @@ set(BSP_NUCLEO_PATH "${BSP_PATH}/NUCLEO-H743ZI") set(BSP_NUCLEO_INC_PATH "${BSP_NUCLEO_PATH}/Inc") # See stm32-cmake documentation for more information -find_package(CMSIS COMPONENTS STM32H743ZI STM32H7_M7 RTOS REQUIRED) -find_package(FreeRTOS COMPONENTS STM32H7 ARM_CM7 REQUIRED) -find_package(HAL COMPONENTS STM32H7M7 STM32H743ZI RCC GPIO UART TIM CORTEX ETH SPI DMA REQUIRED) +find_package( + CMSIS + COMPONENTS STM32H743ZI STM32H7_M7 RTOS + REQUIRED) +find_package( + FreeRTOS + COMPONENTS STM32H7 ARM_CM7 + REQUIRED) +find_package( + HAL + COMPONENTS STM32H7M7 + STM32H743ZI + RCC + GPIO + UART + TIM + CORTEX + ETH + SPI + DMA + REQUIRED) find_package(LwIP REQUIRED) -# These need to be set for the FSFW so the sources are compiled with the ABI flags -# and to compile FreeRTOS first +# These need to be set for the FSFW so the sources are compiled with the ABI +# flags and to compile FreeRTOS first set(LIB_OS_NAME ${FREERTOS_NAMESPACE}::ARM_CM7) # This target is used because a custom linker script is used set(CMSIS_LINK_TARGET CMSIS::STM32::H743xx::M7) set(FSFW_ADDITIONAL_LINK_LIBS ${CMSIS_LINK_TARGET}) -set(FSFW_HAL_LINK_LIBS - HAL::STM32::H7::M7::CORTEX - ${CMSIS_LINK_TARGET} - ${LIB_OS_NAME} -) +set(FSFW_HAL_LINK_LIBS HAL::STM32::H7::M7::CORTEX ${CMSIS_LINK_TARGET} + ${LIB_OS_NAME}) set(FSFW_HAL_ADDITIONAL_INC_PATHS ${BSP_NUCLEO_INC_PATH}) -set(FSFW_ADDITIONAL_INC_PATHS - "${COMMON_CONFIG_PATH}" - "${CMAKE_CURRENT_BINARY_DIR}" - CACHE STRING - "FSFW configuration paths" -) +set(FSFW_ADDITIONAL_INC_PATHS + "${COMMON_CONFIG_PATH}" "${CMAKE_CURRENT_BINARY_DIR}" + CACHE STRING "FSFW configuration paths") configure_file(${COMMON_CONFIG_PATH}/commonConfig.h.in commonConfig.h) configure_file(${FSFW_CONFIG_PATH}/FSFWConfig.h.in FSFWConfig.h) @@ -83,24 +95,19 @@ configure_file(${BSP_NUCLEO_PATH}/Inc/FreeRTOSConfig.h.in FreeRTOSConfig.h) configure_file(${BSP_NUCLEO_PATH}/Inc/lwipopts.h.in lwipopts.h) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(WARNING_FLAGS - -Wall - -Wextra - -Wimplicit-fallthrough=1 - -Wno-unused-parameter - -Wno-psabi - ) + set(WARNING_FLAGS -Wall -Wextra -Wimplicit-fallthrough=1 + -Wno-unused-parameter -Wno-psabi) - set(FSFW_WARNING_FLAGS ${WARNING_FLAGS}) + set(FSFW_WARNING_FLAGS ${WARNING_FLAGS}) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - add_compile_options(/permissive- /d2SSAOptimizer-) - # To avoid nameclashes with min and max macro - add_compile_definitions(NOMINMAX) + add_compile_options(/permissive- /d2SSAOptimizer-) + # To avoid nameclashes with min and max macro + add_compile_definitions(NOMINMAX) endif() -################################################################################ +# ############################################################################## # Executable and Sources -################################################################################ +# ############################################################################## # Add executable add_executable(${TARGET_NAME}) @@ -111,91 +118,78 @@ add_subdirectory(${FSFW_PATH}) # add_subdirectory(${LIB_FSFW_HAL_PATH}) add_subdirectory(${COMMON_PATH}) -################################################################################ +# ############################################################################## # Post-Sources preparation -################################################################################ +# ############################################################################## # Add libraries for all sources. -target_link_libraries(${TARGET_NAME} PRIVATE - ${LIB_FSFW_NAME} - # ${LIB_FSFW_HAL_NAME} - ${FREERTOS_NAMESPACE}::Heap::4 - ${FREERTOS_NAMESPACE}::ARM_CM7 - HAL::STM32::H7::M7::RCC - HAL::STM32::H7::M7::RCCEx - HAL::STM32::H7::M7::GPIO - HAL::STM32::H7::M7::UART - HAL::STM32::H7::M7::CORTEX - HAL::STM32::H7::M7::TIM - HAL::STM32::H7::M7::TIMEx - HAL::STM32::H7::M7::ETH - HAL::STM32::H7::M7::SPI - HAL::STM32::H7::M7::DMA - ${CMSIS_LINK_TARGET} - CMSIS::STM32::H7::M7::RTOS - STM32::NoSys - STM32::Nano - STM32::Nano::FloatPrint - STM32::Nano::FloatScan - LwIP - LwIP::IPv4 - LwIP::NETIF -) +target_link_libraries( + ${TARGET_NAME} + PRIVATE ${LIB_FSFW_NAME} + # ${LIB_FSFW_HAL_NAME} + ${FREERTOS_NAMESPACE}::Heap::4 + ${FREERTOS_NAMESPACE}::ARM_CM7 + HAL::STM32::H7::M7::RCC + HAL::STM32::H7::M7::RCCEx + HAL::STM32::H7::M7::GPIO + HAL::STM32::H7::M7::UART + HAL::STM32::H7::M7::CORTEX + HAL::STM32::H7::M7::TIM + HAL::STM32::H7::M7::TIMEx + HAL::STM32::H7::M7::ETH + HAL::STM32::H7::M7::SPI + HAL::STM32::H7::M7::DMA + ${CMSIS_LINK_TARGET} + CMSIS::STM32::H7::M7::RTOS + STM32::NoSys + STM32::Nano + STM32::Nano::FloatPrint + STM32::Nano::FloatScan + LwIP + LwIP::IPv4 + LwIP::NETIF) # Add include paths for all sources. -target_include_directories(${TARGET_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${FSFW_CONFIG_PATH} -) - +target_include_directories( + ${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} ${FSFW_CONFIG_PATH}) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - target_link_options(${TARGET_NAME} PRIVATE - "-Wl,-Map=${TARGET_NAME}.map" - ) + target_link_options(${TARGET_NAME} PRIVATE "-Wl,-Map=${TARGET_NAME}.map") - # Remove unused sections. - target_compile_options(${TARGET_NAME} PRIVATE - "-ffunction-sections" - "-fdata-sections" - ) + # Remove unused sections. + target_compile_options(${TARGET_NAME} PRIVATE "-ffunction-sections" + "-fdata-sections") - # Removed unused sections. - if(NOT FSFW_OSAL MATCHES rtems) - target_link_options(${TARGET_NAME} PRIVATE - "-Wl,--gc-sections" - ) - endif() + # Removed unused sections. + if(NOT FSFW_OSAL MATCHES rtems) + target_link_options(${TARGET_NAME} PRIVATE "-Wl,--gc-sections") + endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + endif() if(CMAKE_VERBOSE) - message(STATUS "Warning flags: ${WARNING_FLAGS}") + message(STATUS "Warning flags: ${WARNING_FLAGS}") endif() - # Compile options for all sources. -target_compile_options(${TARGET_NAME} PRIVATE - ${WARNING_FLAGS} -) +target_compile_options(${TARGET_NAME} PRIVATE ${WARNING_FLAGS}) if(TGT_BSP) - set(TARGET_STRING "Target BSP: ${TGT_BSP}") + set(TARGET_STRING "Target BSP: ${TGT_BSP}") else() - set(TARGET_STRING "Target BSP: Hosted") + set(TARGET_STRING "Target BSP: Hosted") endif() -string(CONCAT POST_BUILD_COMMENT - "Build directory: ${CMAKE_BINARY_DIR}\n" - "Target OSAL: ${FSFW_OSAL}\n" - "Target Build Type: ${CMAKE_BUILD_TYPE}\n" - "${TARGET_STRING}" -) +string(CONCAT POST_BUILD_COMMENT "Build directory: ${CMAKE_BINARY_DIR}\n" + "Target OSAL: ${FSFW_OSAL}\n" + "Target Build Type: ${CMAKE_BUILD_TYPE}\n" "${TARGET_STRING}") -stm32_add_linker_script(${TARGET_NAME} "PRIVATE" "${BSP_NUCLEO_PATH}/STM32H743ZITx_FLASH.ld") +stm32_add_linker_script(${TARGET_NAME} "PRIVATE" + "${BSP_NUCLEO_PATH}/STM32H743ZITx_FLASH.ld") -include (${CMAKE_SCRIPT_PATH}/BuildType.cmake) +include(${CMAKE_SCRIPT_PATH}/BuildType.cmake) set_build_type() stm32_print_size_of_target(${TARGET_NAME}) diff --git a/bsp_stm32h7_freertos/CMakeLists.txt b/bsp_stm32h7_freertos/CMakeLists.txt index 0b66dbe..4d083d6 100644 --- a/bsp_stm32h7_freertos/CMakeLists.txt +++ b/bsp_stm32h7_freertos/CMakeLists.txt @@ -1,16 +1,11 @@ -target_sources(${TARGET_NAME} PRIVATE - main.cpp -) +target_sources(${TARGET_NAME} PRIVATE main.cpp) -target_compile_options(${TARGET_NAME} PRIVATE -) +target_compile_options(${TARGET_NAME} PRIVATE) -target_link_options(${TARGET_NAME} PRIVATE -) +target_link_options(${TARGET_NAME} PRIVATE) -target_compile_definitions(${TARGET_NAME} PRIVATE - BOARD_NAME="stm32h743zi-nucleo" -) +target_compile_definitions(${TARGET_NAME} + PRIVATE BOARD_NAME="stm32h743zi-nucleo") add_subdirectory(core) add_subdirectory(utility) diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/CMakeLists.txt b/bsp_stm32h7_freertos/NUCLEO-H743ZI/CMakeLists.txt index d1cd56e..1018ae2 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/CMakeLists.txt +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/CMakeLists.txt @@ -1,5 +1,3 @@ add_subdirectory(Src) -target_include_directories(${TARGET_NAME} PRIVATE - Inc -) +target_include_directories(${TARGET_NAME} PRIVATE Inc) diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_dhcp.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_dhcp.h index 79b513f..3d962b5 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_dhcp.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_dhcp.h @@ -8,12 +8,12 @@ #include /* DHCP process states */ -#define DHCP_OFF (uint8_t) 0 -#define DHCP_START (uint8_t) 1 -#define DHCP_WAIT_ADDRESS (uint8_t) 2 -#define DHCP_ADDRESS_ASSIGNED (uint8_t) 3 -#define DHCP_TIMEOUT (uint8_t) 4 -#define DHCP_LINK_DOWN (uint8_t) 5 +#define DHCP_OFF (uint8_t)0 +#define DHCP_START (uint8_t)1 +#define DHCP_WAIT_ADDRESS (uint8_t)2 +#define DHCP_ADDRESS_ASSIGNED (uint8_t)3 +#define DHCP_TIMEOUT (uint8_t)4 +#define DHCP_LINK_DOWN (uint8_t)5 uint8_t get_dhcp_state(); void set_dhcp_state(uint8_t new_state); diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_ethernet.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_ethernet.h index eb54226..d6985c6 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_ethernet.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/app_ethernet.h @@ -1,54 +1,54 @@ /** - ****************************************************************************** - * @file LwIP/LwIP_UDP_Echo_Client/Inc/app_ethernet.h - * @author MCD Application Team - * @brief Header for app_ethernet.c module - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2017 STMicroelectronics International N.V. - * 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. Redistribution 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 other - * contributors to this software may be used to endorse or promote products - * derived from this software without specific written permission. - * 4. This software, including modifications and/or derivative works of this - * software, must execute solely and exclusively on microcontroller or - * microprocessor devices manufactured by or for STMicroelectronics. - * 5. Redistribution and use of this software other than as permitted under - * this license is void and will automatically terminate your rights under - * this license. - * - * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY - * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT - * SHALL STMICROELECTRONICS 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. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file LwIP/LwIP_UDP_Echo_Client/Inc/app_ethernet.h + * @author MCD Application Team + * @brief Header for app_ethernet.c module + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics International N.V. + * 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. Redistribution 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific written permission. + * 4. This software, including modifications and/or derivative works of this + * software, must execute solely and exclusively on microcontroller or + * microprocessor devices manufactured by or for STMicroelectronics. + * 5. Redistribution and use of this software other than as permitted under + * this license is void and will automatically terminate your rights under + * this license. + * + * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY + * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT + * SHALL STMICROELECTRONICS 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 __APP_ETHERNET_H #define __APP_ETHERNET_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ @@ -58,13 +58,12 @@ /* Exported constants --------------------------------------------------------*/ - /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void ethernet_link_status_updated(struct netif *netif); void ethernet_link_periodic_handle(struct netif *netif); -void set_lwip_addresses(ip_addr_t* ipaddr, ip_addr_t* netmask, ip_addr_t* gw); +void set_lwip_addresses(ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw); #ifdef __cplusplus } @@ -72,6 +71,4 @@ void set_lwip_addresses(ip_addr_t* ipaddr, ip_addr_t* netmask, ip_addr_t* gw); #endif /* __APP_ETHERNET_H */ - /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/boardconfig.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/boardconfig.h index 0eb6393..79665f5 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/boardconfig.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/boardconfig.h @@ -2,9 +2,7 @@ #define BSP_STM32_BOARDS_NUCLEO_H743ZI_INC_BOARDCONFIG_H_ //! Timeout when sending debug data via the UART interface in MS -#define DEBUG_UART_MS_TIMEOUT 10 -#define DEBUG_UART_BAUDRATE 115200 - - +#define DEBUG_UART_MS_TIMEOUT 10 +#define DEBUG_UART_BAUDRATE 115200 #endif /* BSP_STM32_BOARDS_NUCLEO_H743ZI_INC_BOARDCONFIG_H_ */ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/hardware_init.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/hardware_init.h index 0a23e78..248b6b9 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/hardware_init.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/hardware_init.h @@ -9,8 +9,8 @@ extern "C" { #endif -#include #include +#include #include #include diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/lan8742.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/lan8742.h index c1620dd..35a3b39 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/lan8742.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/lan8742.h @@ -1,411 +1,408 @@ /** - ****************************************************************************** - * @file lan8742.h - * @author MCD Application Team - * @brief This file contains all the functions prototypes for the - * lan8742.c PHY driver. - ****************************************************************************** - * @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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file lan8742.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the + * lan8742.c PHY driver. + ****************************************************************************** + * @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 + * + ****************************************************************************** + */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef LAN8742_H #define LAN8742_H #ifdef __cplusplus - extern "C" { -#endif - +extern "C" { +#endif + /* Includes ------------------------------------------------------------------*/ #include /** @addtogroup BSP - * @{ - */ + * @{ + */ /** @addtogroup Component - * @{ - */ - + * @{ + */ + /** @defgroup LAN8742 - * @{ - */ + * @{ + */ /* Exported constants --------------------------------------------------------*/ /** @defgroup LAN8742_Exported_Constants LAN8742 Exported Constants - * @{ - */ - + * @{ + */ + /** @defgroup LAN8742_Registers_Mapping LAN8742 Registers Mapping - * @{ - */ -#define LAN8742_BCR ((uint16_t)0x0000U) -#define LAN8742_BSR ((uint16_t)0x0001U) -#define LAN8742_PHYI1R ((uint16_t)0x0002U) -#define LAN8742_PHYI2R ((uint16_t)0x0003U) -#define LAN8742_ANAR ((uint16_t)0x0004U) -#define LAN8742_ANLPAR ((uint16_t)0x0005U) -#define LAN8742_ANER ((uint16_t)0x0006U) -#define LAN8742_ANNPTR ((uint16_t)0x0007U) -#define LAN8742_ANNPRR ((uint16_t)0x0008U) -#define LAN8742_MMDACR ((uint16_t)0x000DU) -#define LAN8742_MMDAADR ((uint16_t)0x000EU) -#define LAN8742_ENCTR ((uint16_t)0x0010U) -#define LAN8742_MCSR ((uint16_t)0x0011U) -#define LAN8742_SMR ((uint16_t)0x0012U) -#define LAN8742_TPDCR ((uint16_t)0x0018U) -#define LAN8742_TCSR ((uint16_t)0x0019U) -#define LAN8742_SECR ((uint16_t)0x001AU) -#define LAN8742_SCSIR ((uint16_t)0x001BU) -#define LAN8742_CLR ((uint16_t)0x001CU) -#define LAN8742_ISFR ((uint16_t)0x001DU) -#define LAN8742_IMR ((uint16_t)0x001EU) -#define LAN8742_PHYSCSR ((uint16_t)0x001FU) + * @{ + */ +#define LAN8742_BCR ((uint16_t)0x0000U) +#define LAN8742_BSR ((uint16_t)0x0001U) +#define LAN8742_PHYI1R ((uint16_t)0x0002U) +#define LAN8742_PHYI2R ((uint16_t)0x0003U) +#define LAN8742_ANAR ((uint16_t)0x0004U) +#define LAN8742_ANLPAR ((uint16_t)0x0005U) +#define LAN8742_ANER ((uint16_t)0x0006U) +#define LAN8742_ANNPTR ((uint16_t)0x0007U) +#define LAN8742_ANNPRR ((uint16_t)0x0008U) +#define LAN8742_MMDACR ((uint16_t)0x000DU) +#define LAN8742_MMDAADR ((uint16_t)0x000EU) +#define LAN8742_ENCTR ((uint16_t)0x0010U) +#define LAN8742_MCSR ((uint16_t)0x0011U) +#define LAN8742_SMR ((uint16_t)0x0012U) +#define LAN8742_TPDCR ((uint16_t)0x0018U) +#define LAN8742_TCSR ((uint16_t)0x0019U) +#define LAN8742_SECR ((uint16_t)0x001AU) +#define LAN8742_SCSIR ((uint16_t)0x001BU) +#define LAN8742_CLR ((uint16_t)0x001CU) +#define LAN8742_ISFR ((uint16_t)0x001DU) +#define LAN8742_IMR ((uint16_t)0x001EU) +#define LAN8742_PHYSCSR ((uint16_t)0x001FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_BCR_Bit_Definition LAN8742 BCR Bit Definition - * @{ - */ -#define LAN8742_BCR_SOFT_RESET ((uint16_t)0x8000U) -#define LAN8742_BCR_LOOPBACK ((uint16_t)0x4000U) -#define LAN8742_BCR_SPEED_SELECT ((uint16_t)0x2000U) -#define LAN8742_BCR_AUTONEGO_EN ((uint16_t)0x1000U) -#define LAN8742_BCR_POWER_DOWN ((uint16_t)0x0800U) -#define LAN8742_BCR_ISOLATE ((uint16_t)0x0400U) -#define LAN8742_BCR_RESTART_AUTONEGO ((uint16_t)0x0200U) -#define LAN8742_BCR_DUPLEX_MODE ((uint16_t)0x0100U) + * @{ + */ +#define LAN8742_BCR_SOFT_RESET ((uint16_t)0x8000U) +#define LAN8742_BCR_LOOPBACK ((uint16_t)0x4000U) +#define LAN8742_BCR_SPEED_SELECT ((uint16_t)0x2000U) +#define LAN8742_BCR_AUTONEGO_EN ((uint16_t)0x1000U) +#define LAN8742_BCR_POWER_DOWN ((uint16_t)0x0800U) +#define LAN8742_BCR_ISOLATE ((uint16_t)0x0400U) +#define LAN8742_BCR_RESTART_AUTONEGO ((uint16_t)0x0200U) +#define LAN8742_BCR_DUPLEX_MODE ((uint16_t)0x0100U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_BSR_Bit_Definition LAN8742 BSR Bit Definition - * @{ - */ -#define LAN8742_BSR_100BASE_T4 ((uint16_t)0x8000U) -#define LAN8742_BSR_100BASE_TX_FD ((uint16_t)0x4000U) -#define LAN8742_BSR_100BASE_TX_HD ((uint16_t)0x2000U) -#define LAN8742_BSR_10BASE_T_FD ((uint16_t)0x1000U) -#define LAN8742_BSR_10BASE_T_HD ((uint16_t)0x0800U) -#define LAN8742_BSR_100BASE_T2_FD ((uint16_t)0x0400U) -#define LAN8742_BSR_100BASE_T2_HD ((uint16_t)0x0200U) -#define LAN8742_BSR_EXTENDED_STATUS ((uint16_t)0x0100U) -#define LAN8742_BSR_AUTONEGO_CPLT ((uint16_t)0x0020U) -#define LAN8742_BSR_REMOTE_FAULT ((uint16_t)0x0010U) + * @{ + */ +#define LAN8742_BSR_100BASE_T4 ((uint16_t)0x8000U) +#define LAN8742_BSR_100BASE_TX_FD ((uint16_t)0x4000U) +#define LAN8742_BSR_100BASE_TX_HD ((uint16_t)0x2000U) +#define LAN8742_BSR_10BASE_T_FD ((uint16_t)0x1000U) +#define LAN8742_BSR_10BASE_T_HD ((uint16_t)0x0800U) +#define LAN8742_BSR_100BASE_T2_FD ((uint16_t)0x0400U) +#define LAN8742_BSR_100BASE_T2_HD ((uint16_t)0x0200U) +#define LAN8742_BSR_EXTENDED_STATUS ((uint16_t)0x0100U) +#define LAN8742_BSR_AUTONEGO_CPLT ((uint16_t)0x0020U) +#define LAN8742_BSR_REMOTE_FAULT ((uint16_t)0x0010U) #define LAN8742_BSR_AUTONEGO_ABILITY ((uint16_t)0x0008U) -#define LAN8742_BSR_LINK_STATUS ((uint16_t)0x0004U) -#define LAN8742_BSR_JABBER_DETECT ((uint16_t)0x0002U) -#define LAN8742_BSR_EXTENDED_CAP ((uint16_t)0x0001U) +#define LAN8742_BSR_LINK_STATUS ((uint16_t)0x0004U) +#define LAN8742_BSR_JABBER_DETECT ((uint16_t)0x0002U) +#define LAN8742_BSR_EXTENDED_CAP ((uint16_t)0x0001U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_PHYI1R_Bit_Definition LAN8742 PHYI1R Bit Definition - * @{ - */ -#define LAN8742_PHYI1R_OUI_3_18 ((uint16_t)0xFFFFU) + * @{ + */ +#define LAN8742_PHYI1R_OUI_3_18 ((uint16_t)0xFFFFU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_PHYI2R_Bit_Definition LAN8742 PHYI2R Bit Definition - * @{ - */ -#define LAN8742_PHYI2R_OUI_19_24 ((uint16_t)0xFC00U) -#define LAN8742_PHYI2R_MODEL_NBR ((uint16_t)0x03F0U) -#define LAN8742_PHYI2R_REVISION_NBR ((uint16_t)0x000FU) + * @{ + */ +#define LAN8742_PHYI2R_OUI_19_24 ((uint16_t)0xFC00U) +#define LAN8742_PHYI2R_MODEL_NBR ((uint16_t)0x03F0U) +#define LAN8742_PHYI2R_REVISION_NBR ((uint16_t)0x000FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ANAR_Bit_Definition LAN8742 ANAR Bit Definition - * @{ - */ -#define LAN8742_ANAR_NEXT_PAGE ((uint16_t)0x8000U) -#define LAN8742_ANAR_REMOTE_FAULT ((uint16_t)0x2000U) -#define LAN8742_ANAR_PAUSE_OPERATION ((uint16_t)0x0C00U) -#define LAN8742_ANAR_PO_NOPAUSE ((uint16_t)0x0000U) -#define LAN8742_ANAR_PO_SYMMETRIC_PAUSE ((uint16_t)0x0400U) -#define LAN8742_ANAR_PO_ASYMMETRIC_PAUSE ((uint16_t)0x0800U) -#define LAN8742_ANAR_PO_ADVERTISE_SUPPORT ((uint16_t)0x0C00U) -#define LAN8742_ANAR_100BASE_TX_FD ((uint16_t)0x0100U) -#define LAN8742_ANAR_100BASE_TX ((uint16_t)0x0080U) -#define LAN8742_ANAR_10BASE_T_FD ((uint16_t)0x0040U) -#define LAN8742_ANAR_10BASE_T ((uint16_t)0x0020U) -#define LAN8742_ANAR_SELECTOR_FIELD ((uint16_t)0x000FU) + * @{ + */ +#define LAN8742_ANAR_NEXT_PAGE ((uint16_t)0x8000U) +#define LAN8742_ANAR_REMOTE_FAULT ((uint16_t)0x2000U) +#define LAN8742_ANAR_PAUSE_OPERATION ((uint16_t)0x0C00U) +#define LAN8742_ANAR_PO_NOPAUSE ((uint16_t)0x0000U) +#define LAN8742_ANAR_PO_SYMMETRIC_PAUSE ((uint16_t)0x0400U) +#define LAN8742_ANAR_PO_ASYMMETRIC_PAUSE ((uint16_t)0x0800U) +#define LAN8742_ANAR_PO_ADVERTISE_SUPPORT ((uint16_t)0x0C00U) +#define LAN8742_ANAR_100BASE_TX_FD ((uint16_t)0x0100U) +#define LAN8742_ANAR_100BASE_TX ((uint16_t)0x0080U) +#define LAN8742_ANAR_10BASE_T_FD ((uint16_t)0x0040U) +#define LAN8742_ANAR_10BASE_T ((uint16_t)0x0020U) +#define LAN8742_ANAR_SELECTOR_FIELD ((uint16_t)0x000FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ANLPAR_Bit_Definition LAN8742 ANLPAR Bit Definition - * @{ - */ -#define LAN8742_ANLPAR_NEXT_PAGE ((uint16_t)0x8000U) -#define LAN8742_ANLPAR_REMOTE_FAULT ((uint16_t)0x2000U) -#define LAN8742_ANLPAR_PAUSE_OPERATION ((uint16_t)0x0C00U) -#define LAN8742_ANLPAR_PO_NOPAUSE ((uint16_t)0x0000U) -#define LAN8742_ANLPAR_PO_SYMMETRIC_PAUSE ((uint16_t)0x0400U) -#define LAN8742_ANLPAR_PO_ASYMMETRIC_PAUSE ((uint16_t)0x0800U) + * @{ + */ +#define LAN8742_ANLPAR_NEXT_PAGE ((uint16_t)0x8000U) +#define LAN8742_ANLPAR_REMOTE_FAULT ((uint16_t)0x2000U) +#define LAN8742_ANLPAR_PAUSE_OPERATION ((uint16_t)0x0C00U) +#define LAN8742_ANLPAR_PO_NOPAUSE ((uint16_t)0x0000U) +#define LAN8742_ANLPAR_PO_SYMMETRIC_PAUSE ((uint16_t)0x0400U) +#define LAN8742_ANLPAR_PO_ASYMMETRIC_PAUSE ((uint16_t)0x0800U) #define LAN8742_ANLPAR_PO_ADVERTISE_SUPPORT ((uint16_t)0x0C00U) -#define LAN8742_ANLPAR_100BASE_TX_FD ((uint16_t)0x0100U) -#define LAN8742_ANLPAR_100BASE_TX ((uint16_t)0x0080U) -#define LAN8742_ANLPAR_10BASE_T_FD ((uint16_t)0x0040U) -#define LAN8742_ANLPAR_10BASE_T ((uint16_t)0x0020U) -#define LAN8742_ANLPAR_SELECTOR_FIELD ((uint16_t)0x000FU) +#define LAN8742_ANLPAR_100BASE_TX_FD ((uint16_t)0x0100U) +#define LAN8742_ANLPAR_100BASE_TX ((uint16_t)0x0080U) +#define LAN8742_ANLPAR_10BASE_T_FD ((uint16_t)0x0040U) +#define LAN8742_ANLPAR_10BASE_T ((uint16_t)0x0020U) +#define LAN8742_ANLPAR_SELECTOR_FIELD ((uint16_t)0x000FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ANER_Bit_Definition LAN8742 ANER Bit Definition - * @{ - */ -#define LAN8742_ANER_RX_NP_LOCATION_ABLE ((uint16_t)0x0040U) + * @{ + */ +#define LAN8742_ANER_RX_NP_LOCATION_ABLE ((uint16_t)0x0040U) #define LAN8742_ANER_RX_NP_STORAGE_LOCATION ((uint16_t)0x0020U) -#define LAN8742_ANER_PARALLEL_DETECT_FAULT ((uint16_t)0x0010U) -#define LAN8742_ANER_LP_NP_ABLE ((uint16_t)0x0008U) -#define LAN8742_ANER_NP_ABLE ((uint16_t)0x0004U) -#define LAN8742_ANER_PAGE_RECEIVED ((uint16_t)0x0002U) -#define LAN8742_ANER_LP_AUTONEG_ABLE ((uint16_t)0x0001U) +#define LAN8742_ANER_PARALLEL_DETECT_FAULT ((uint16_t)0x0010U) +#define LAN8742_ANER_LP_NP_ABLE ((uint16_t)0x0008U) +#define LAN8742_ANER_NP_ABLE ((uint16_t)0x0004U) +#define LAN8742_ANER_PAGE_RECEIVED ((uint16_t)0x0002U) +#define LAN8742_ANER_LP_AUTONEG_ABLE ((uint16_t)0x0001U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ANNPTR_Bit_Definition LAN8742 ANNPTR Bit Definition - * @{ - */ -#define LAN8742_ANNPTR_NEXT_PAGE ((uint16_t)0x8000U) -#define LAN8742_ANNPTR_MESSAGE_PAGE ((uint16_t)0x2000U) -#define LAN8742_ANNPTR_ACK2 ((uint16_t)0x1000U) -#define LAN8742_ANNPTR_TOGGLE ((uint16_t)0x0800U) -#define LAN8742_ANNPTR_MESSAGGE_CODE ((uint16_t)0x07FFU) + * @{ + */ +#define LAN8742_ANNPTR_NEXT_PAGE ((uint16_t)0x8000U) +#define LAN8742_ANNPTR_MESSAGE_PAGE ((uint16_t)0x2000U) +#define LAN8742_ANNPTR_ACK2 ((uint16_t)0x1000U) +#define LAN8742_ANNPTR_TOGGLE ((uint16_t)0x0800U) +#define LAN8742_ANNPTR_MESSAGGE_CODE ((uint16_t)0x07FFU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ANNPRR_Bit_Definition LAN8742 ANNPRR Bit Definition - * @{ - */ -#define LAN8742_ANNPTR_NEXT_PAGE ((uint16_t)0x8000U) -#define LAN8742_ANNPRR_ACK ((uint16_t)0x4000U) -#define LAN8742_ANNPRR_MESSAGE_PAGE ((uint16_t)0x2000U) -#define LAN8742_ANNPRR_ACK2 ((uint16_t)0x1000U) -#define LAN8742_ANNPRR_TOGGLE ((uint16_t)0x0800U) -#define LAN8742_ANNPRR_MESSAGGE_CODE ((uint16_t)0x07FFU) + * @{ + */ +#define LAN8742_ANNPTR_NEXT_PAGE ((uint16_t)0x8000U) +#define LAN8742_ANNPRR_ACK ((uint16_t)0x4000U) +#define LAN8742_ANNPRR_MESSAGE_PAGE ((uint16_t)0x2000U) +#define LAN8742_ANNPRR_ACK2 ((uint16_t)0x1000U) +#define LAN8742_ANNPRR_TOGGLE ((uint16_t)0x0800U) +#define LAN8742_ANNPRR_MESSAGGE_CODE ((uint16_t)0x07FFU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_MMDACR_Bit_Definition LAN8742 MMDACR Bit Definition - * @{ - */ -#define LAN8742_MMDACR_MMD_FUNCTION ((uint16_t)0xC000U) -#define LAN8742_MMDACR_MMD_FUNCTION_ADDR ((uint16_t)0x0000U) -#define LAN8742_MMDACR_MMD_FUNCTION_DATA ((uint16_t)0x4000U) -#define LAN8742_MMDACR_MMD_DEV_ADDR ((uint16_t)0x001FU) + * @{ + */ +#define LAN8742_MMDACR_MMD_FUNCTION ((uint16_t)0xC000U) +#define LAN8742_MMDACR_MMD_FUNCTION_ADDR ((uint16_t)0x0000U) +#define LAN8742_MMDACR_MMD_FUNCTION_DATA ((uint16_t)0x4000U) +#define LAN8742_MMDACR_MMD_DEV_ADDR ((uint16_t)0x001FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_ENCTR_Bit_Definition LAN8742 ENCTR Bit Definition - * @{ - */ -#define LAN8742_ENCTR_TX_ENABLE ((uint16_t)0x8000U) -#define LAN8742_ENCTR_TX_TIMER ((uint16_t)0x6000U) -#define LAN8742_ENCTR_TX_TIMER_1S ((uint16_t)0x0000U) -#define LAN8742_ENCTR_TX_TIMER_768MS ((uint16_t)0x2000U) -#define LAN8742_ENCTR_TX_TIMER_512MS ((uint16_t)0x4000U) -#define LAN8742_ENCTR_TX_TIMER_265MS ((uint16_t)0x6000U) -#define LAN8742_ENCTR_RX_ENABLE ((uint16_t)0x1000U) -#define LAN8742_ENCTR_RX_MAX_INTERVAL ((uint16_t)0x0C00U) -#define LAN8742_ENCTR_RX_MAX_INTERVAL_64MS ((uint16_t)0x0000U) + * @{ + */ +#define LAN8742_ENCTR_TX_ENABLE ((uint16_t)0x8000U) +#define LAN8742_ENCTR_TX_TIMER ((uint16_t)0x6000U) +#define LAN8742_ENCTR_TX_TIMER_1S ((uint16_t)0x0000U) +#define LAN8742_ENCTR_TX_TIMER_768MS ((uint16_t)0x2000U) +#define LAN8742_ENCTR_TX_TIMER_512MS ((uint16_t)0x4000U) +#define LAN8742_ENCTR_TX_TIMER_265MS ((uint16_t)0x6000U) +#define LAN8742_ENCTR_RX_ENABLE ((uint16_t)0x1000U) +#define LAN8742_ENCTR_RX_MAX_INTERVAL ((uint16_t)0x0C00U) +#define LAN8742_ENCTR_RX_MAX_INTERVAL_64MS ((uint16_t)0x0000U) #define LAN8742_ENCTR_RX_MAX_INTERVAL_256MS ((uint16_t)0x0400U) #define LAN8742_ENCTR_RX_MAX_INTERVAL_512MS ((uint16_t)0x0800U) -#define LAN8742_ENCTR_RX_MAX_INTERVAL_1S ((uint16_t)0x0C00U) -#define LAN8742_ENCTR_EX_CROSS_OVER ((uint16_t)0x0002U) -#define LAN8742_ENCTR_EX_MANUAL_CROSS_OVER ((uint16_t)0x0001U) +#define LAN8742_ENCTR_RX_MAX_INTERVAL_1S ((uint16_t)0x0C00U) +#define LAN8742_ENCTR_EX_CROSS_OVER ((uint16_t)0x0002U) +#define LAN8742_ENCTR_EX_MANUAL_CROSS_OVER ((uint16_t)0x0001U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_MCSR_Bit_Definition LAN8742 MCSR Bit Definition - * @{ - */ -#define LAN8742_MCSR_EDPWRDOWN ((uint16_t)0x2000U) -#define LAN8742_MCSR_FARLOOPBACK ((uint16_t)0x0200U) -#define LAN8742_MCSR_ALTINT ((uint16_t)0x0040U) -#define LAN8742_MCSR_ENERGYON ((uint16_t)0x0002U) + * @{ + */ +#define LAN8742_MCSR_EDPWRDOWN ((uint16_t)0x2000U) +#define LAN8742_MCSR_FARLOOPBACK ((uint16_t)0x0200U) +#define LAN8742_MCSR_ALTINT ((uint16_t)0x0040U) +#define LAN8742_MCSR_ENERGYON ((uint16_t)0x0002U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_SMR_Bit_Definition LAN8742 SMR Bit Definition - * @{ - */ -#define LAN8742_SMR_MODE ((uint16_t)0x00E0U) -#define LAN8742_SMR_PHY_ADDR ((uint16_t)0x001FU) + * @{ + */ +#define LAN8742_SMR_MODE ((uint16_t)0x00E0U) +#define LAN8742_SMR_PHY_ADDR ((uint16_t)0x001FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_TPDCR_Bit_Definition LAN8742 TPDCR Bit Definition - * @{ - */ -#define LAN8742_TPDCR_DELAY_IN ((uint16_t)0x8000U) -#define LAN8742_TPDCR_LINE_BREAK_COUNTER ((uint16_t)0x7000U) -#define LAN8742_TPDCR_PATTERN_HIGH ((uint16_t)0x0FC0U) -#define LAN8742_TPDCR_PATTERN_LOW ((uint16_t)0x003FU) + * @{ + */ +#define LAN8742_TPDCR_DELAY_IN ((uint16_t)0x8000U) +#define LAN8742_TPDCR_LINE_BREAK_COUNTER ((uint16_t)0x7000U) +#define LAN8742_TPDCR_PATTERN_HIGH ((uint16_t)0x0FC0U) +#define LAN8742_TPDCR_PATTERN_LOW ((uint16_t)0x003FU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_TCSR_Bit_Definition LAN8742 TCSR Bit Definition - * @{ - */ -#define LAN8742_TCSR_TDR_ENABLE ((uint16_t)0x8000U) + * @{ + */ +#define LAN8742_TCSR_TDR_ENABLE ((uint16_t)0x8000U) #define LAN8742_TCSR_TDR_AD_FILTER_ENABLE ((uint16_t)0x4000U) -#define LAN8742_TCSR_TDR_CH_CABLE_TYPE ((uint16_t)0x0600U) +#define LAN8742_TCSR_TDR_CH_CABLE_TYPE ((uint16_t)0x0600U) #define LAN8742_TCSR_TDR_CH_CABLE_DEFAULT ((uint16_t)0x0000U) #define LAN8742_TCSR_TDR_CH_CABLE_SHORTED ((uint16_t)0x0200U) -#define LAN8742_TCSR_TDR_CH_CABLE_OPEN ((uint16_t)0x0400U) -#define LAN8742_TCSR_TDR_CH_CABLE_MATCH ((uint16_t)0x0600U) -#define LAN8742_TCSR_TDR_CH_STATUS ((uint16_t)0x0100U) -#define LAN8742_TCSR_TDR_CH_LENGTH ((uint16_t)0x00FFU) +#define LAN8742_TCSR_TDR_CH_CABLE_OPEN ((uint16_t)0x0400U) +#define LAN8742_TCSR_TDR_CH_CABLE_MATCH ((uint16_t)0x0600U) +#define LAN8742_TCSR_TDR_CH_STATUS ((uint16_t)0x0100U) +#define LAN8742_TCSR_TDR_CH_LENGTH ((uint16_t)0x00FFU) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_SCSIR_Bit_Definition LAN8742 SCSIR Bit Definition - * @{ - */ -#define LAN8742_SCSIR_AUTO_MDIX_ENABLE ((uint16_t)0x8000U) -#define LAN8742_SCSIR_CHANNEL_SELECT ((uint16_t)0x2000U) -#define LAN8742_SCSIR_SQE_DISABLE ((uint16_t)0x0800U) -#define LAN8742_SCSIR_XPOLALITY ((uint16_t)0x0010U) + * @{ + */ +#define LAN8742_SCSIR_AUTO_MDIX_ENABLE ((uint16_t)0x8000U) +#define LAN8742_SCSIR_CHANNEL_SELECT ((uint16_t)0x2000U) +#define LAN8742_SCSIR_SQE_DISABLE ((uint16_t)0x0800U) +#define LAN8742_SCSIR_XPOLALITY ((uint16_t)0x0010U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_CLR_Bit_Definition LAN8742 CLR Bit Definition - * @{ - */ -#define LAN8742_CLR_CABLE_LENGTH ((uint16_t)0xF000U) + * @{ + */ +#define LAN8742_CLR_CABLE_LENGTH ((uint16_t)0xF000U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_IMR_ISFR_Bit_Definition LAN8742 IMR ISFR Bit Definition - * @{ - */ -#define LAN8742_INT_8 ((uint16_t)0x0100U) -#define LAN8742_INT_7 ((uint16_t)0x0080U) -#define LAN8742_INT_6 ((uint16_t)0x0040U) -#define LAN8742_INT_5 ((uint16_t)0x0020U) -#define LAN8742_INT_4 ((uint16_t)0x0010U) -#define LAN8742_INT_3 ((uint16_t)0x0008U) -#define LAN8742_INT_2 ((uint16_t)0x0004U) -#define LAN8742_INT_1 ((uint16_t)0x0002U) + * @{ + */ +#define LAN8742_INT_8 ((uint16_t)0x0100U) +#define LAN8742_INT_7 ((uint16_t)0x0080U) +#define LAN8742_INT_6 ((uint16_t)0x0040U) +#define LAN8742_INT_5 ((uint16_t)0x0020U) +#define LAN8742_INT_4 ((uint16_t)0x0010U) +#define LAN8742_INT_3 ((uint16_t)0x0008U) +#define LAN8742_INT_2 ((uint16_t)0x0004U) +#define LAN8742_INT_1 ((uint16_t)0x0002U) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_PHYSCSR_Bit_Definition LAN8742 PHYSCSR Bit Definition - * @{ - */ -#define LAN8742_PHYSCSR_AUTONEGO_DONE ((uint16_t)0x1000U) -#define LAN8742_PHYSCSR_HCDSPEEDMASK ((uint16_t)0x001CU) -#define LAN8742_PHYSCSR_10BT_HD ((uint16_t)0x0004U) -#define LAN8742_PHYSCSR_10BT_FD ((uint16_t)0x0014U) -#define LAN8742_PHYSCSR_100BTX_HD ((uint16_t)0x0008U) -#define LAN8742_PHYSCSR_100BTX_FD ((uint16_t)0x0018U) + * @{ + */ +#define LAN8742_PHYSCSR_AUTONEGO_DONE ((uint16_t)0x1000U) +#define LAN8742_PHYSCSR_HCDSPEEDMASK ((uint16_t)0x001CU) +#define LAN8742_PHYSCSR_10BT_HD ((uint16_t)0x0004U) +#define LAN8742_PHYSCSR_10BT_FD ((uint16_t)0x0014U) +#define LAN8742_PHYSCSR_100BTX_HD ((uint16_t)0x0008U) +#define LAN8742_PHYSCSR_100BTX_FD ((uint16_t)0x0018U) /** - * @} - */ - -/** @defgroup LAN8742_Status LAN8742 Status - * @{ - */ + * @} + */ -#define LAN8742_STATUS_READ_ERROR ((int32_t)-5) -#define LAN8742_STATUS_WRITE_ERROR ((int32_t)-4) -#define LAN8742_STATUS_ADDRESS_ERROR ((int32_t)-3) -#define LAN8742_STATUS_RESET_TIMEOUT ((int32_t)-2) -#define LAN8742_STATUS_ERROR ((int32_t)-1) -#define LAN8742_STATUS_OK ((int32_t) 0) -#define LAN8742_STATUS_LINK_DOWN ((int32_t) 1) -#define LAN8742_STATUS_100MBITS_FULLDUPLEX ((int32_t) 2) -#define LAN8742_STATUS_100MBITS_HALFDUPLEX ((int32_t) 3) -#define LAN8742_STATUS_10MBITS_FULLDUPLEX ((int32_t) 4) -#define LAN8742_STATUS_10MBITS_HALFDUPLEX ((int32_t) 5) -#define LAN8742_STATUS_AUTONEGO_NOTDONE ((int32_t) 6) +/** @defgroup LAN8742_Status LAN8742 Status + * @{ + */ + +#define LAN8742_STATUS_READ_ERROR ((int32_t)-5) +#define LAN8742_STATUS_WRITE_ERROR ((int32_t)-4) +#define LAN8742_STATUS_ADDRESS_ERROR ((int32_t)-3) +#define LAN8742_STATUS_RESET_TIMEOUT ((int32_t)-2) +#define LAN8742_STATUS_ERROR ((int32_t)-1) +#define LAN8742_STATUS_OK ((int32_t)0) +#define LAN8742_STATUS_LINK_DOWN ((int32_t)1) +#define LAN8742_STATUS_100MBITS_FULLDUPLEX ((int32_t)2) +#define LAN8742_STATUS_100MBITS_HALFDUPLEX ((int32_t)3) +#define LAN8742_STATUS_10MBITS_FULLDUPLEX ((int32_t)4) +#define LAN8742_STATUS_10MBITS_HALFDUPLEX ((int32_t)5) +#define LAN8742_STATUS_AUTONEGO_NOTDONE ((int32_t)6) /** - * @} - */ + * @} + */ /** @defgroup LAN8742_IT_Flags LAN8742 IT Flags - * @{ - */ -#define LAN8742_WOL_IT LAN8742_INT_8 -#define LAN8742_ENERGYON_IT LAN8742_INT_7 -#define LAN8742_AUTONEGO_COMPLETE_IT LAN8742_INT_6 -#define LAN8742_REMOTE_FAULT_IT LAN8742_INT_5 -#define LAN8742_LINK_DOWN_IT LAN8742_INT_4 -#define LAN8742_AUTONEGO_LP_ACK_IT LAN8742_INT_3 -#define LAN8742_PARALLEL_DETECTION_FAULT_IT LAN8742_INT_2 -#define LAN8742_AUTONEGO_PAGE_RECEIVED_IT LAN8742_INT_1 + * @{ + */ +#define LAN8742_WOL_IT LAN8742_INT_8 +#define LAN8742_ENERGYON_IT LAN8742_INT_7 +#define LAN8742_AUTONEGO_COMPLETE_IT LAN8742_INT_6 +#define LAN8742_REMOTE_FAULT_IT LAN8742_INT_5 +#define LAN8742_LINK_DOWN_IT LAN8742_INT_4 +#define LAN8742_AUTONEGO_LP_ACK_IT LAN8742_INT_3 +#define LAN8742_PARALLEL_DETECTION_FAULT_IT LAN8742_INT_2 +#define LAN8742_AUTONEGO_PAGE_RECEIVED_IT LAN8742_INT_1 /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ -/* Exported types ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ /** @defgroup LAN8742_Exported_Types LAN8742 Exported Types - * @{ - */ -typedef int32_t (*lan8742_Init_Func) (void); -typedef int32_t (*lan8742_DeInit_Func) (void); -typedef int32_t (*lan8742_ReadReg_Func) (uint32_t, uint32_t, uint32_t *); -typedef int32_t (*lan8742_WriteReg_Func) (uint32_t, uint32_t, uint32_t); -typedef int32_t (*lan8742_GetTick_Func) (void); + * @{ + */ +typedef int32_t (*lan8742_Init_Func)(void); +typedef int32_t (*lan8742_DeInit_Func)(void); +typedef int32_t (*lan8742_ReadReg_Func)(uint32_t, uint32_t, uint32_t *); +typedef int32_t (*lan8742_WriteReg_Func)(uint32_t, uint32_t, uint32_t); +typedef int32_t (*lan8742_GetTick_Func)(void); -typedef struct -{ - lan8742_Init_Func Init; - lan8742_DeInit_Func DeInit; - lan8742_WriteReg_Func WriteReg; - lan8742_ReadReg_Func ReadReg; - lan8742_GetTick_Func GetTick; -} lan8742_IOCtx_t; +typedef struct { + lan8742_Init_Func Init; + lan8742_DeInit_Func DeInit; + lan8742_WriteReg_Func WriteReg; + lan8742_ReadReg_Func ReadReg; + lan8742_GetTick_Func GetTick; +} lan8742_IOCtx_t; - -typedef struct -{ - uint32_t DevAddr; - uint32_t Is_Initialized; - lan8742_IOCtx_t IO; - void *pData; -}lan8742_Object_t; +typedef struct { + uint32_t DevAddr; + uint32_t Is_Initialized; + lan8742_IOCtx_t IO; + void *pData; +} lan8742_Object_t; /** - * @} - */ + * @} + */ /* Exported macro ------------------------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ /** @defgroup LAN8742_Exported_Functions LAN8742 Exported Functions - * @{ - */ + * @{ + */ int32_t LAN8742_RegisterBusIO(lan8742_Object_t *pObj, lan8742_IOCtx_t *ioctx); int32_t LAN8742_Init(lan8742_Object_t *pObj); int32_t LAN8742_DeInit(lan8742_Object_t *pObj); @@ -421,28 +418,27 @@ int32_t LAN8742_DisableIT(lan8742_Object_t *pObj, uint32_t Interrupt); int32_t LAN8742_ClearIT(lan8742_Object_t *pObj, uint32_t Interrupt); int32_t LAN8742_GetITStatus(lan8742_Object_t *pObj, uint32_t Interrupt); /** - * @} - */ + * @} + */ #ifdef __cplusplus } #endif #endif /* LAN8742_H */ +/** + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ - -/** - * @} - */ + * @} + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/main.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/main.h index 74acb41..a98fdd8 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/main.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/main.h @@ -58,33 +58,34 @@ extern "C" { /* Exported constants --------------------------------------------------------*/ /* UDP local connection port */ -#define UDP_SERVER_PORT 7 +#define UDP_SERVER_PORT 7 /* UDP remote connection port */ -#define UDP_CLIENT_PORT 2008 +#define UDP_CLIENT_PORT 2008 -/*Static DEST IP ADDRESS: DEST_IP_ADDR0.DEST_IP_ADDR1.DEST_IP_ADDR2.DEST_IP_ADDR3 */ -#define DEST_IP_ADDR0 ((uint8_t)169U) -#define DEST_IP_ADDR1 ((uint8_t)254U) -#define DEST_IP_ADDR2 ((uint8_t)39U) -#define DEST_IP_ADDR3 ((uint8_t)2U) +/*Static DEST IP ADDRESS: + * DEST_IP_ADDR0.DEST_IP_ADDR1.DEST_IP_ADDR2.DEST_IP_ADDR3 */ +#define DEST_IP_ADDR0 ((uint8_t)169U) +#define DEST_IP_ADDR1 ((uint8_t)254U) +#define DEST_IP_ADDR2 ((uint8_t)39U) +#define DEST_IP_ADDR3 ((uint8_t)2U) /*Static IP ADDRESS*/ -#define IP_ADDR0 169 -#define IP_ADDR1 254 -#define IP_ADDR2 1 -#define IP_ADDR3 38 +#define IP_ADDR0 169 +#define IP_ADDR1 254 +#define IP_ADDR2 1 +#define IP_ADDR3 38 /*NETMASK*/ -#define NETMASK_ADDR0 255 -#define NETMASK_ADDR1 255 -#define NETMASK_ADDR2 0 -#define NETMASK_ADDR3 0 +#define NETMASK_ADDR0 255 +#define NETMASK_ADDR1 255 +#define NETMASK_ADDR2 0 +#define NETMASK_ADDR3 0 /*Gateway Address*/ -#define GW_ADDR0 192 -#define GW_ADDR1 168 -#define GW_ADDR2 178 -#define GW_ADDR3 1 +#define GW_ADDR0 192 +#define GW_ADDR1 168 +#define GW_ADDR2 178 +#define GW_ADDR3 1 #ifdef __cplusplus } @@ -92,5 +93,4 @@ extern "C" { #endif /* __MAIN_H */ - /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_hal_conf.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_hal_conf.h index 19d41fa..628e71d 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_hal_conf.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_hal_conf.h @@ -1,30 +1,30 @@ /** - ****************************************************************************** - * @file stm32h7xx_hal_conf_template.h - * @author MCD Application Team - * @brief HAL configuration template file. - * This file should be copied to the application folder and renamed - * to stm32h7xx_hal_conf.h. - ****************************************************************************** - * @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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32h7xx_hal_conf_template.h + * @author MCD Application Team + * @brief HAL configuration template file. + * This file should be copied to the application folder and renamed + * to stm32h7xx_hal_conf.h. + ****************************************************************************** + * @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 + * + ****************************************************************************** + */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32H7xx_HAL_CONF_H #define __STM32H7xx_HAL_CONF_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Exported types ------------------------------------------------------------*/ @@ -32,8 +32,8 @@ /* ########################## Module Selection ############################## */ /** - * @brief This is the list of modules to be used in the HAL driver - */ + * @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_CEC_MODULE_ENABLED @@ -67,11 +67,11 @@ #define HAL_MMC_MODULE_ENABLED #define HAL_NAND_MODULE_ENABLED #define HAL_NOR_MODULE_ENABLED -#define HAL_OPAMP_MODULE_ENABLED +#define HAL_OPAMP_MODULE_ENABLED #define HAL_PCD_MODULE_ENABLED #define HAL_PWR_MODULE_ENABLED #define HAL_QSPI_MODULE_ENABLED -#define HAL_RAMECC_MODULE_ENABLED +#define HAL_RAMECC_MODULE_ENABLED #define HAL_RCC_MODULE_ENABLED #define HAL_RNG_MODULE_ENABLED #define HAL_RTC_MODULE_ENABLED @@ -89,223 +89,232 @@ #define HAL_USART_MODULE_ENABLED #define HAL_WWDG_MODULE_ENABLED -/* ########################## Oscillator Values adaptation ####################*/ +/* ########################## 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)8000000) /*!< Value of the External oscillator in Hz */ -#endif /* HSE_VALUE */ + * @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)8000000) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ -#if !defined (HSE_STARTUP_TIMEOUT) - #define HSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for HSE start up, in ms */ -#endif /* HSE_STARTUP_TIMEOUT */ +#if !defined(HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT \ + ((uint32_t)5000) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ /** - * @brief Internal oscillator (CSI) default value. - * This value is the default CSI value after Reset. - */ -#if !defined (CSI_VALUE) - #define CSI_VALUE ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/ -#endif /* CSI_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)64000000) /*!< Value of the Internal oscillator in Hz*/ -#endif /* HSI_VALUE */ + * @brief Internal oscillator (CSI) default value. + * This value is the default CSI value after Reset. + */ +#if !defined(CSI_VALUE) +#define CSI_VALUE \ + ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* CSI_VALUE */ /** - * @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)32768) /*!< Value of the External oscillator in Hz*/ -#endif /* LSE_VALUE */ - - -#if !defined (LSE_STARTUP_TIMEOUT) - #define LSE_STARTUP_TIMEOUT ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ -#endif /* LSE_STARTUP_TIMEOUT */ - -#if !defined (LSI_VALUE) - #define LSI_VALUE ((uint32_t)32000) /*!< 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 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)64000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ /** - * @brief External clock source for I2S peripheral - * This value is used by the I2S HAL module to compute the I2S clock source - * frequency, this source is inserted directly through I2S_CKIN pad. - */ -#if !defined (EXTERNAL_CLOCK_VALUE) - #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External clock in Hz*/ -#endif /* EXTERNAL_CLOCK_VALUE */ + * @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)32768) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined(LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT \ + ((uint32_t)5000) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +#if !defined(LSI_VALUE) +#define LSI_VALUE ((uint32_t)32000) /*!< 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 clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock + * source frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined(EXTERNAL_CLOCK_VALUE) +#define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the External clock in \ + Hz*/ +#endif /* EXTERNAL_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)3300) /*!< Value of VDD in mv */ -#define TICK_INT_PRIORITY ((uint32_t)0x0F) /*!< tick interrupt priority */ -#define USE_RTOS 0 -/* #define USE_SD_TRANSCEIVER 1U */ /*!< use uSD Transceiver */ -#define USE_SPI_CRC 1U /*!< use CRC in SPI */ + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE ((uint32_t)3300) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0x0F) /*!< tick interrupt priority */ +#define USE_RTOS 0 +/* #define USE_SD_TRANSCEIVER 1U */ /*!< use uSD Transceiver */ +#define USE_SPI_CRC 1U /*!< use CRC in SPI */ -/* ########################### Ethernet Configuration ######################### */ -#define ETH_TX_DESC_CNT 4 /* number of Ethernet Tx DMA descriptors */ -#define ETH_RX_DESC_CNT 4 /* number of Ethernet Rx DMA descriptors */ +/* ########################### Ethernet Configuration ######################### + */ +#define ETH_TX_DESC_CNT 4 /* number of Ethernet Tx DMA descriptors */ +#define ETH_RX_DESC_CNT 4 /* number of Ethernet Rx DMA descriptors */ -#define ETH_MAC_ADDR0 ((uint8_t)0x02) -#define ETH_MAC_ADDR1 ((uint8_t)0x00) -#define ETH_MAC_ADDR2 ((uint8_t)0x00) -#define ETH_MAC_ADDR3 ((uint8_t)0x00) -#define ETH_MAC_ADDR4 ((uint8_t)0x00) -#define ETH_MAC_ADDR5 ((uint8_t)0x00) +#define ETH_MAC_ADDR0 ((uint8_t)0x02) +#define ETH_MAC_ADDR1 ((uint8_t)0x00) +#define ETH_MAC_ADDR2 ((uint8_t)0x00) +#define ETH_MAC_ADDR3 ((uint8_t)0x00) +#define ETH_MAC_ADDR4 ((uint8_t)0x00) +#define ETH_MAC_ADDR5 ((uint8_t)0x00) /* ########################## Assert Selection ############################## */ /** - * @brief Uncomment the line below to expanse the "assert_param" macro in the - * HAL drivers code - */ + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ /* #define USE_FULL_ASSERT 1 */ - /* Includes ------------------------------------------------------------------*/ /** - * @brief Include module's header file - */ + * @brief Include module's header file + */ #ifdef HAL_RCC_MODULE_ENABLED - #include "stm32h7xx_hal_rcc.h" +#include "stm32h7xx_hal_rcc.h" #endif /* HAL_RCC_MODULE_ENABLED */ #ifdef HAL_GPIO_MODULE_ENABLED - #include "stm32h7xx_hal_gpio.h" +#include "stm32h7xx_hal_gpio.h" #endif /* HAL_GPIO_MODULE_ENABLED */ #ifdef HAL_DMA_MODULE_ENABLED - #include "stm32h7xx_hal_dma.h" +#include "stm32h7xx_hal_dma.h" #endif /* HAL_DMA_MODULE_ENABLED */ #ifdef HAL_MDMA_MODULE_ENABLED - #include "stm32h7xx_hal_mdma.h" +#include "stm32h7xx_hal_mdma.h" #endif /* HAL_MDMA_MODULE_ENABLED */ #ifdef HAL_HASH_MODULE_ENABLED - #include "stm32h7xx_hal_hash.h" +#include "stm32h7xx_hal_hash.h" #endif /* HAL_HASH_MODULE_ENABLED */ #ifdef HAL_DCMI_MODULE_ENABLED - #include "stm32h7xx_hal_dcmi.h" +#include "stm32h7xx_hal_dcmi.h" #endif /* HAL_DCMI_MODULE_ENABLED */ #ifdef HAL_DMA2D_MODULE_ENABLED - #include "stm32h7xx_hal_dma2d.h" +#include "stm32h7xx_hal_dma2d.h" #endif /* HAL_DMA2D_MODULE_ENABLED */ #ifdef HAL_DFSDM_MODULE_ENABLED - #include "stm32h7xx_hal_dfsdm.h" +#include "stm32h7xx_hal_dfsdm.h" #endif /* HAL_DFSDM_MODULE_ENABLED */ #ifdef HAL_ETH_MODULE_ENABLED - #include "stm32h7xx_hal_eth.h" +#include "stm32h7xx_hal_eth.h" #endif /* HAL_ETH_MODULE_ENABLED */ - + #ifdef HAL_EXTI_MODULE_ENABLED - #include "stm32h7xx_hal_exti.h" +#include "stm32h7xx_hal_exti.h" #endif /* HAL_EXTI_MODULE_ENABLED */ #ifdef HAL_CORTEX_MODULE_ENABLED - #include "stm32h7xx_hal_cortex.h" +#include "stm32h7xx_hal_cortex.h" #endif /* HAL_CORTEX_MODULE_ENABLED */ #ifdef HAL_ADC_MODULE_ENABLED - #include "stm32h7xx_hal_adc.h" +#include "stm32h7xx_hal_adc.h" #endif /* HAL_ADC_MODULE_ENABLED */ #ifdef HAL_FDCAN_MODULE_ENABLED - #include "stm32h7xx_hal_fdcan.h" +#include "stm32h7xx_hal_fdcan.h" #endif /* HAL_FDCAN_MODULE_ENABLED */ #ifdef HAL_CEC_MODULE_ENABLED - #include "stm32h7xx_hal_cec.h" +#include "stm32h7xx_hal_cec.h" #endif /* HAL_CEC_MODULE_ENABLED */ #ifdef HAL_COMP_MODULE_ENABLED - #include "stm32h7xx_hal_comp.h" +#include "stm32h7xx_hal_comp.h" #endif /* HAL_COMP_MODULE_ENABLED */ #ifdef HAL_CRC_MODULE_ENABLED - #include "stm32h7xx_hal_crc.h" +#include "stm32h7xx_hal_crc.h" #endif /* HAL_CRC_MODULE_ENABLED */ #ifdef HAL_CRYP_MODULE_ENABLED - #include "stm32h7xx_hal_cryp.h" +#include "stm32h7xx_hal_cryp.h" #endif /* HAL_CRYP_MODULE_ENABLED */ #ifdef HAL_DAC_MODULE_ENABLED - #include "stm32h7xx_hal_dac.h" +#include "stm32h7xx_hal_dac.h" #endif /* HAL_DAC_MODULE_ENABLED */ #ifdef HAL_FLASH_MODULE_ENABLED - #include "stm32h7xx_hal_flash.h" +#include "stm32h7xx_hal_flash.h" #endif /* HAL_FLASH_MODULE_ENABLED */ #ifdef HAL_HRTIM_MODULE_ENABLED - #include "stm32h7xx_hal_hrtim.h" +#include "stm32h7xx_hal_hrtim.h" #endif /* HAL_HRTIM_MODULE_ENABLED */ #ifdef HAL_HSEM_MODULE_ENABLED - #include "stm32h7xx_hal_hsem.h" +#include "stm32h7xx_hal_hsem.h" #endif /* HAL_HSEM_MODULE_ENABLED */ #ifdef HAL_SRAM_MODULE_ENABLED - #include "stm32h7xx_hal_sram.h" +#include "stm32h7xx_hal_sram.h" #endif /* HAL_SRAM_MODULE_ENABLED */ #ifdef HAL_NOR_MODULE_ENABLED - #include "stm32h7xx_hal_nor.h" +#include "stm32h7xx_hal_nor.h" #endif /* HAL_NOR_MODULE_ENABLED */ #ifdef HAL_NAND_MODULE_ENABLED - #include "stm32h7xx_hal_nand.h" +#include "stm32h7xx_hal_nand.h" #endif /* HAL_NAND_MODULE_ENABLED */ - + #ifdef HAL_I2C_MODULE_ENABLED - #include "stm32h7xx_hal_i2c.h" +#include "stm32h7xx_hal_i2c.h" #endif /* HAL_I2C_MODULE_ENABLED */ #ifdef HAL_I2S_MODULE_ENABLED - #include "stm32h7xx_hal_i2s.h" +#include "stm32h7xx_hal_i2s.h" #endif /* HAL_I2S_MODULE_ENABLED */ #ifdef HAL_IWDG_MODULE_ENABLED - #include "stm32h7xx_hal_iwdg.h" +#include "stm32h7xx_hal_iwdg.h" #endif /* HAL_IWDG_MODULE_ENABLED */ #ifdef HAL_JPEG_MODULE_ENABLED - #include "stm32h7xx_hal_jpeg.h" +#include "stm32h7xx_hal_jpeg.h" #endif /* HAL_JPEG_MODULE_ENABLED */ #ifdef HAL_MDIOS_MODULE_ENABLED - #include "stm32h7xx_hal_mdios.h" +#include "stm32h7xx_hal_mdios.h" #endif /* HAL_MDIOS_MODULE_ENABLED */ - #ifdef HAL_MMC_MODULE_ENABLED - #include "stm32h7xx_hal_mmc.h" +#include "stm32h7xx_hal_mmc.h" #endif /* HAL_MMC_MODULE_ENABLED */ - + #ifdef HAL_LPTIM_MODULE_ENABLED #include "stm32h7xx_hal_lptim.h" #endif /* HAL_LPTIM_MODULE_ENABLED */ @@ -317,102 +326,103 @@ #ifdef HAL_OPAMP_MODULE_ENABLED #include "stm32h7xx_hal_opamp.h" #endif /* HAL_OPAMP_MODULE_ENABLED */ - + #ifdef HAL_PWR_MODULE_ENABLED - #include "stm32h7xx_hal_pwr.h" +#include "stm32h7xx_hal_pwr.h" #endif /* HAL_PWR_MODULE_ENABLED */ #ifdef HAL_QSPI_MODULE_ENABLED - #include "stm32h7xx_hal_qspi.h" +#include "stm32h7xx_hal_qspi.h" #endif /* HAL_QSPI_MODULE_ENABLED */ #ifdef HAL_RAMECC_MODULE_ENABLED - #include "stm32h7xx_hal_ramecc.h" +#include "stm32h7xx_hal_ramecc.h" #endif /* HAL_HCD_MODULE_ENABLED */ - + #ifdef HAL_RNG_MODULE_ENABLED - #include "stm32h7xx_hal_rng.h" +#include "stm32h7xx_hal_rng.h" #endif /* HAL_RNG_MODULE_ENABLED */ #ifdef HAL_RTC_MODULE_ENABLED - #include "stm32h7xx_hal_rtc.h" +#include "stm32h7xx_hal_rtc.h" #endif /* HAL_RTC_MODULE_ENABLED */ #ifdef HAL_SAI_MODULE_ENABLED - #include "stm32h7xx_hal_sai.h" +#include "stm32h7xx_hal_sai.h" #endif /* HAL_SAI_MODULE_ENABLED */ #ifdef HAL_SD_MODULE_ENABLED - #include "stm32h7xx_hal_sd.h" +#include "stm32h7xx_hal_sd.h" #endif /* HAL_SD_MODULE_ENABLED */ #ifdef HAL_SDRAM_MODULE_ENABLED - #include "stm32h7xx_hal_sdram.h" +#include "stm32h7xx_hal_sdram.h" #endif /* HAL_SDRAM_MODULE_ENABLED */ - + #ifdef HAL_SPI_MODULE_ENABLED - #include "stm32h7xx_hal_spi.h" +#include "stm32h7xx_hal_spi.h" #endif /* HAL_SPI_MODULE_ENABLED */ #ifdef HAL_SPDIFRX_MODULE_ENABLED - #include "stm32h7xx_hal_spdifrx.h" +#include "stm32h7xx_hal_spdifrx.h" #endif /* HAL_SPDIFRX_MODULE_ENABLED */ #ifdef HAL_SWPMI_MODULE_ENABLED - #include "stm32h7xx_hal_swpmi.h" +#include "stm32h7xx_hal_swpmi.h" #endif /* HAL_SWPMI_MODULE_ENABLED */ #ifdef HAL_TIM_MODULE_ENABLED - #include "stm32h7xx_hal_tim.h" +#include "stm32h7xx_hal_tim.h" #endif /* HAL_TIM_MODULE_ENABLED */ #ifdef HAL_UART_MODULE_ENABLED - #include "stm32h7xx_hal_uart.h" +#include "stm32h7xx_hal_uart.h" #endif /* HAL_UART_MODULE_ENABLED */ #ifdef HAL_USART_MODULE_ENABLED - #include "stm32h7xx_hal_usart.h" +#include "stm32h7xx_hal_usart.h" #endif /* HAL_USART_MODULE_ENABLED */ #ifdef HAL_IRDA_MODULE_ENABLED - #include "stm32h7xx_hal_irda.h" +#include "stm32h7xx_hal_irda.h" #endif /* HAL_IRDA_MODULE_ENABLED */ #ifdef HAL_SMARTCARD_MODULE_ENABLED - #include "stm32h7xx_hal_smartcard.h" +#include "stm32h7xx_hal_smartcard.h" #endif /* HAL_SMARTCARD_MODULE_ENABLED */ #ifdef HAL_SMBUS_MODULE_ENABLED - #include "stm32h7xx_hal_smbus.h" +#include "stm32h7xx_hal_smbus.h" #endif /* HAL_SMBUS_MODULE_ENABLED */ #ifdef HAL_WWDG_MODULE_ENABLED - #include "stm32h7xx_hal_wwdg.h" +#include "stm32h7xx_hal_wwdg.h" #endif /* HAL_WWDG_MODULE_ENABLED */ - + #ifdef HAL_PCD_MODULE_ENABLED - #include "stm32h7xx_hal_pcd.h" +#include "stm32h7xx_hal_pcd.h" #endif /* HAL_PCD_MODULE_ENABLED */ #ifdef HAL_HCD_MODULE_ENABLED - #include "stm32h7xx_hal_hcd.h" +#include "stm32h7xx_hal_hcd.h" #endif /* HAL_HCD_MODULE_ENABLED */ - + /* Exported macro ------------------------------------------------------------*/ -#ifdef USE_FULL_ASSERT +#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((uint8_t *)__FILE__, __LINE__)) + * @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((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */ - void assert_failed(uint8_t* file, uint32_t line); +void assert_failed(uint8_t *file, uint32_t line); #else - #define assert_param(expr) ((void)0U) +#define assert_param(expr) ((void)0U) #endif /* USE_FULL_ASSERT */ #ifdef __cplusplus @@ -420,6 +430,5 @@ #endif #endif /* __STM32H7xx_HAL_CONF_H */ - /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_it.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_it.h index 8c36922..8a9f4ed 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_it.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_it.h @@ -1,29 +1,29 @@ /** - ****************************************************************************** - * @file Templates/Inc/stm32h7xx_it.h - * @author MCD Application Team - * @brief This file contains the headers of the interrupt handlers. - ****************************************************************************** - * @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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file Templates/Inc/stm32h7xx_it.h + * @author MCD Application Team + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @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 + * + ****************************************************************************** + */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32H7xx_IT_H #define __STM32H7xx_IT_H #ifdef __cplusplus - extern "C" { -#endif +extern "C" { +#endif /* Includes ------------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo.h index 5608b9c..011fba3 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo.h @@ -1,30 +1,30 @@ /** - ****************************************************************************** - * @file stm32h7xx_nucleo.h - * @author MCD Application Team - * @brief This file contains definitions for: - * - LEDs and push-button available on STM32H7xx-Nucleo Kit - * from STMicroelectronics - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32h7xx_nucleo.h + * @author MCD Application Team + * @brief This file contains definitions for: + * - LEDs and push-button available on STM32H7xx-Nucleo Kit + * from STMicroelectronics + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 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 STM32H7XX_NUCLEO_H #define STM32H7XX_NUCLEO_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ @@ -32,48 +32,51 @@ #include "stm32h7xx_nucleo_errno.h" #if (USE_BSP_COM_FEATURE > 0) - #if (USE_COM_LOG > 0) - #ifndef __GNUC__ - #include - #endif - #endif +#if (USE_COM_LOG > 0) +#ifndef __GNUC__ +#include +#endif +#endif #endif /** @addtogroup BSP - * @{ - */ + * @{ + */ /** @defgroup STM32H7XX_NUCLEO STM32H7XX_NUCLEO - * @{ - */ + * @{ + */ /** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL LOW LEVEL - * @{ - */ + * @{ + */ /** - * @brief Define for STM32H7XX_NUCLEO board - */ -#if !defined (USE_STM32H7XX_NUCLEO) - #define USE_STM32H7XX_NUCLEO + * @brief Define for STM32H7XX_NUCLEO board + */ +#if !defined(USE_STM32H7XX_NUCLEO) +#define USE_STM32H7XX_NUCLEO #endif -#if !defined (USE_NUCLEO_144) - #error "Board Pin number not defined!! Add USE_NUCLEO_144 define within stm32h7xx_nucleo_conf.h file" +#if !defined(USE_NUCLEO_144) +#error \ + "Board Pin number not defined!! Add USE_NUCLEO_144 define within stm32h7xx_nucleo_conf.h file" #endif -#if !defined (USE_NUCLEO_H745ZI_Q) && !defined (USE_NUCLEO_H743ZI) && !defined (USE_NUCLEO_H743ZI2) &&\ - !defined (USE_NUCLEO_H7A3ZI_Q) && !defined (USE_NUCLEO_H723ZG) - #error "Board Part number not defined!! Add one of the following define within stm32h7xx_nucleo_conf.h file:\ +#if !defined(USE_NUCLEO_H745ZI_Q) && !defined(USE_NUCLEO_H743ZI) && \ + !defined(USE_NUCLEO_H743ZI2) && !defined(USE_NUCLEO_H7A3ZI_Q) && \ + !defined(USE_NUCLEO_H723ZG) +#error \ + "Board Part number not defined!! Add one of the following define within stm32h7xx_nucleo_conf.h file:\ USE_NUCLEO_H745ZI_Q, USE_NUCLEO_H743ZI, USE_NUCLEO_H743ZI2, USE_NUCLEO_H7A3ZI_Q, USE_NUCLEO_H723ZG" #endif /** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Types LOW LEVEL Exported Types - * @{ - */ -#if defined (USE_NUCLEO_H745ZI_Q) || defined (USE_NUCLEO_H743ZI2) || defined (USE_NUCLEO_H7A3ZI_Q) || defined (USE_NUCLEO_H723ZG) -typedef enum -{ + * @{ + */ +#if defined(USE_NUCLEO_H745ZI_Q) || defined(USE_NUCLEO_H743ZI2) || \ + defined(USE_NUCLEO_H7A3ZI_Q) || defined(USE_NUCLEO_H723ZG) +typedef enum { LED1 = 0, LED_GREEN = LED1, LED2 = 1, @@ -81,10 +84,9 @@ typedef enum LED3 = 2, LED_RED = LED3, LEDn -}Led_TypeDef; +} Led_TypeDef; #else /* USE_NUCLEO_H743ZI */ -typedef enum -{ +typedef enum { LED1 = 0, LED_GREEN = LED1, LED2 = 1, @@ -92,242 +94,230 @@ typedef enum LED3 = 2, LED_RED = LED3, LEDn -}Led_TypeDef; +} Led_TypeDef; #endif -typedef enum -{ - BUTTON_USER = 0U, - BUTTONn -}Button_TypeDef; +typedef enum { BUTTON_USER = 0U, BUTTONn } Button_TypeDef; -typedef enum -{ - BUTTON_MODE_GPIO = 0, - BUTTON_MODE_EXTI = 1 -}ButtonMode_TypeDef; +typedef enum { BUTTON_MODE_GPIO = 0, BUTTON_MODE_EXTI = 1 } ButtonMode_TypeDef; #if (USE_BSP_COM_FEATURE > 0) -typedef enum -{ - COM1 = 0U, - COMn -}COM_TypeDef; +typedef enum { COM1 = 0U, COMn } COM_TypeDef; -typedef enum -{ - COM_STOPBITS_1 = UART_STOPBITS_1, - COM_STOPBITS_2 = UART_STOPBITS_2, -}COM_StopBitsTypeDef; +typedef enum { + COM_STOPBITS_1 = UART_STOPBITS_1, + COM_STOPBITS_2 = UART_STOPBITS_2, +} COM_StopBitsTypeDef; -typedef enum -{ - COM_PARITY_NONE = UART_PARITY_NONE, - COM_PARITY_EVEN = UART_PARITY_EVEN, - COM_PARITY_ODD = UART_PARITY_ODD, -}COM_ParityTypeDef; +typedef enum { + COM_PARITY_NONE = UART_PARITY_NONE, + COM_PARITY_EVEN = UART_PARITY_EVEN, + COM_PARITY_ODD = UART_PARITY_ODD, +} COM_ParityTypeDef; -typedef enum -{ - COM_HWCONTROL_NONE = UART_HWCONTROL_NONE, - COM_HWCONTROL_RTS = UART_HWCONTROL_RTS, - COM_HWCONTROL_CTS = UART_HWCONTROL_CTS, - COM_HWCONTROL_RTS_CTS = UART_HWCONTROL_RTS_CTS, -}COM_HwFlowCtlTypeDef; +typedef enum { + COM_HWCONTROL_NONE = UART_HWCONTROL_NONE, + COM_HWCONTROL_RTS = UART_HWCONTROL_RTS, + COM_HWCONTROL_CTS = UART_HWCONTROL_CTS, + COM_HWCONTROL_RTS_CTS = UART_HWCONTROL_RTS_CTS, +} COM_HwFlowCtlTypeDef; -typedef enum -{ +typedef enum { COM_WORDLENGTH_7B = UART_WORDLENGTH_7B, COM_WORDLENGTH_8B = UART_WORDLENGTH_8B, COM_WORDLENGTH_9B = UART_WORDLENGTH_9B, -}COM_WordLengthTypeDef; +} COM_WordLengthTypeDef; -typedef struct -{ - uint32_t BaudRate; - COM_WordLengthTypeDef WordLength; - COM_StopBitsTypeDef StopBits; - COM_ParityTypeDef Parity; - COM_HwFlowCtlTypeDef HwFlowCtl; -}COM_InitTypeDef; +typedef struct { + uint32_t BaudRate; + COM_WordLengthTypeDef WordLength; + COM_StopBitsTypeDef StopBits; + COM_ParityTypeDef Parity; + COM_HwFlowCtlTypeDef HwFlowCtl; +} COM_InitTypeDef; #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) -typedef struct -{ - void (* pMspInitCb)(UART_HandleTypeDef *); - void (* pMspDeInitCb)(UART_HandleTypeDef *); -}BSP_COM_Cb_t; +typedef struct { + void (*pMspInitCb)(UART_HandleTypeDef *); + void (*pMspDeInitCb)(UART_HandleTypeDef *); +} BSP_COM_Cb_t; #endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 1) */ #define MX_UART_InitTypeDef COM_InitTypeDef #endif /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Constants LOW LEVEL Exported Constants - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Constants LOW LEVEL Exported + * Constants + * @{ + */ /** - * @brief STM32H7XX NUCLEO BSP Driver version number V1.3.0 - */ -#define STM32H7XX_NUCLEO_BSP_VERSION_MAIN (0x01U) /*!< [31:24] main version */ -#define STM32H7XX_NUCLEO_BSP_VERSION_SUB1 (0x03U) /*!< [23:16] sub1 version */ -#define STM32H7XX_NUCLEO_BSP_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */ -#define STM32H7XX_NUCLEO_BSP_VERSION_RC (0x00U) /*!< [7:0] release candidate */ -#define STM32H7XX_NUCLEO_BSP_VERSION ((STM32H7XX_NUCLEO_BSP_VERSION_MAIN << 24)\ - |(STM32H7XX_NUCLEO_BSP_VERSION_SUB1 << 16)\ - |(STM32H7XX_NUCLEO_BSP_VERSION_SUB2 << 8 )\ - |(STM32H7XX_NUCLEO_BSP_VERSION_RC)) + * @brief STM32H7XX NUCLEO BSP Driver version number V1.3.0 + */ +#define STM32H7XX_NUCLEO_BSP_VERSION_MAIN (0x01U) /*!< [31:24] main version */ +#define STM32H7XX_NUCLEO_BSP_VERSION_SUB1 (0x03U) /*!< [23:16] sub1 version */ +#define STM32H7XX_NUCLEO_BSP_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */ +#define STM32H7XX_NUCLEO_BSP_VERSION_RC (0x00U) /*!< [7:0] release candidate \ + */ +#define STM32H7XX_NUCLEO_BSP_VERSION \ + ((STM32H7XX_NUCLEO_BSP_VERSION_MAIN << 24) | \ + (STM32H7XX_NUCLEO_BSP_VERSION_SUB1 << 16) | \ + (STM32H7XX_NUCLEO_BSP_VERSION_SUB2 << 8) | \ + (STM32H7XX_NUCLEO_BSP_VERSION_RC)) /** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_LED LOW LEVEL LED - * @{ - */ -#define LEDn 3U + * @{ + */ +#define LEDn 3U -#define LED1_PIN GPIO_PIN_0 -#define LED1_GPIO_PORT GPIOB -#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() -#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() +#define LED1_PIN GPIO_PIN_0 +#define LED1_GPIO_PORT GPIOB +#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() -#if defined (USE_NUCLEO_H745ZI_Q) || defined (USE_NUCLEO_H743ZI2) || defined (USE_NUCLEO_H7A3ZI_Q) || defined (USE_NUCLEO_H723ZG) -#define LED2_PIN GPIO_PIN_1 -#define LED2_GPIO_PORT GPIOE -#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() -#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE() +#if defined(USE_NUCLEO_H745ZI_Q) || defined(USE_NUCLEO_H743ZI2) || \ + defined(USE_NUCLEO_H7A3ZI_Q) || defined(USE_NUCLEO_H723ZG) +#define LED2_PIN GPIO_PIN_1 +#define LED2_GPIO_PORT GPIOE +#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE() +#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE() #else /* USE_NUCLEO_H743ZI */ -#define LED2_PIN GPIO_PIN_7 -#define LED2_GPIO_PORT GPIOB -#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() -#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() +#define LED2_PIN GPIO_PIN_7 +#define LED2_GPIO_PORT GPIOB +#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() #endif -#define LED3_PIN GPIO_PIN_14 -#define LED3_GPIO_PORT GPIOB -#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() -#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() +#define LED3_PIN GPIO_PIN_14 +#define LED3_GPIO_PORT GPIOB +#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() /** - * @} - */ + * @} + */ /** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_BUTTON LOW LEVEL BUTTON - * @{ - */ + * @{ + */ /* Button state */ -#define BUTTON_RELEASED 0U -#define BUTTON_PRESSED 1U -#define BUTTONn 1U +#define BUTTON_RELEASED 0U +#define BUTTON_PRESSED 1U +#define BUTTONn 1U /** * @brief Key push-button */ -#define BUTTON_USER_PIN GPIO_PIN_13 -#define BUTTON_USER_GPIO_PORT GPIOC -#define BUTTON_USER_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() -#define BUTTON_USER_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() -#define BUTTON_USER_EXTI_IRQn EXTI15_10_IRQn -#define BUTTON_USER_EXTI_LINE EXTI_LINE_13 +#define BUTTON_USER_PIN GPIO_PIN_13 +#define BUTTON_USER_GPIO_PORT GPIOC +#define BUTTON_USER_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define BUTTON_USER_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() +#define BUTTON_USER_EXTI_IRQn EXTI15_10_IRQn +#define BUTTON_USER_EXTI_LINE EXTI_LINE_13 /** - * @} - */ + * @} + */ /** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_COM LOW LEVEL COM - * @{ - */ + * @{ + */ /** * @brief Definition for COM port1, connected to USART3 */ #if (USE_BSP_COM_FEATURE > 0) -#define COMn 1U -#define COM1_UART USART3 -#define COM1_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE() -#define COM1_CLK_DISABLE() __HAL_RCC_USART3_CLK_DISABLE() +#define COMn 1U +#define COM1_UART USART3 +#define COM1_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE() +#define COM1_CLK_DISABLE() __HAL_RCC_USART3_CLK_DISABLE() -#define COM1_TX_PIN GPIO_PIN_8 -#define COM1_TX_GPIO_PORT GPIOD -#define COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() -#define COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() -#define COM1_TX_AF GPIO_AF7_USART3 +#define COM1_TX_PIN GPIO_PIN_8 +#define COM1_TX_GPIO_PORT GPIOD +#define COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() +#define COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() +#define COM1_TX_AF GPIO_AF7_USART3 -#define COM1_RX_PIN GPIO_PIN_9 -#define COM1_RX_GPIO_PORT GPIOD -#define COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() -#define COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() -#define COM1_RX_AF GPIO_AF7_USART3 -#define COM_POLL_TIMEOUT 1000 +#define COM1_RX_PIN GPIO_PIN_9 +#define COM1_RX_GPIO_PORT GPIOD +#define COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() +#define COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() +#define COM1_RX_AF GPIO_AF7_USART3 +#define COM_POLL_TIMEOUT 1000 #endif /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** @addtogroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Variables - * @{ - */ + * @{ + */ extern EXTI_HandleTypeDef hpb_exti[]; #if (USE_BSP_COM_FEATURE > 0) extern UART_HandleTypeDef hcom_uart[]; -extern USART_TypeDef* COM_USART[]; +extern USART_TypeDef *COM_USART[]; #endif /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_FunctionsPrototypes LOW LEVEL Exported Functions Prototypes - * @{ - */ -int32_t BSP_GetVersion(void); -int32_t BSP_LED_Init(Led_TypeDef Led); -int32_t BSP_LED_DeInit(Led_TypeDef Led); -int32_t BSP_LED_On(Led_TypeDef Led); -int32_t BSP_LED_Off(Led_TypeDef Led); -int32_t BSP_LED_Toggle(Led_TypeDef Led); -int32_t BSP_LED_GetState (Led_TypeDef Led); -int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); -int32_t BSP_PB_DeInit(Button_TypeDef Button); -int32_t BSP_PB_GetState(Button_TypeDef Button); -void BSP_PB_IRQHandler(Button_TypeDef Button); -void BSP_PB_Callback(Button_TypeDef Button); +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_FunctionsPrototypes LOW LEVEL + * Exported Functions Prototypes + * @{ + */ +int32_t BSP_GetVersion(void); +int32_t BSP_LED_Init(Led_TypeDef Led); +int32_t BSP_LED_DeInit(Led_TypeDef Led); +int32_t BSP_LED_On(Led_TypeDef Led); +int32_t BSP_LED_Off(Led_TypeDef Led); +int32_t BSP_LED_Toggle(Led_TypeDef Led); +int32_t BSP_LED_GetState(Led_TypeDef Led); +int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); +int32_t BSP_PB_DeInit(Button_TypeDef Button); +int32_t BSP_PB_GetState(Button_TypeDef Button); +void BSP_PB_IRQHandler(Button_TypeDef Button); +void BSP_PB_Callback(Button_TypeDef Button); #if (USE_BSP_COM_FEATURE > 0) -int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init); -int32_t BSP_COM_DeInit(COM_TypeDef COM); +int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init); +int32_t BSP_COM_DeInit(COM_TypeDef COM); #if (USE_COM_LOG > 0) -int32_t BSP_COM_SelectLogPort (COM_TypeDef COM); +int32_t BSP_COM_SelectLogPort(COM_TypeDef COM); #endif #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM); -int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback); +int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM, BSP_COM_Cb_t *Callback); #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ -HAL_StatusTypeDef MX_USART3_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init); +HAL_StatusTypeDef MX_USART3_Init(UART_HandleTypeDef *huart, + MX_UART_InitTypeDef *COM_Init); #endif /* USE_BSP_COM_FEATURE */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ #ifdef __cplusplus } diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_conf.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_conf.h index 4ff2a87..9787015 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_conf.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_conf.h @@ -1,77 +1,77 @@ /** - ****************************************************************************** - * @file stm32h7xx_nucleo_conf.h - * @author MCD Application Team - * @brief STM32H7xx_Nuleo board configuration file. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32h7xx_nucleo_conf.h + * @author MCD Application Team + * @brief STM32H7xx_Nuleo board configuration file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 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 STM32H7XX_NUCLEO_CONF_H #define STM32H7XX_NUCLEO_CONF_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ -#include "stm32h7xx_hal.h" #include "stm32h743xx.h" +#include "stm32h7xx_hal.h" /** @addtogroup BSP - * @{ - */ + * @{ + */ /** @addtogroup STM32H7XX_NUCLEO - * @{ - */ + * @{ + */ /** @defgroup STM32H7XX_NUCLEO_CONFIG Config - * @{ - */ + * @{ + */ /** @defgroup STM32H7XX_NUCLEO_CONFIG_Exported_Constants Exported Constants - * @{ - */ + * @{ + */ /* Nucleo pin and part number defines */ #define USE_NUCLEO_144 #define USE_NUCLEO_H743ZI /* COM define */ -#define USE_COM_LOG 0U -#define USE_BSP_COM_FEATURE 1U +#define USE_COM_LOG 0U +#define USE_BSP_COM_FEATURE 1U /* IRQ priorities */ -#define BSP_BUTTON_USER_IT_PRIORITY 15U +#define BSP_BUTTON_USER_IT_PRIORITY 15U -#define BUS_SPI1_BAUDRATE 18000000 +#define BUS_SPI1_BAUDRATE 18000000 /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ #ifdef __cplusplus } diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_errno.h b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_errno.h index 8fc1334..bd302c8 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_errno.h +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Inc/stm32h7xx_nucleo_errno.h @@ -1,48 +1,48 @@ -/** - ****************************************************************************** - * @file stm32h7xx_nucleo_errno.h - * @author MCD Application Team - * @brief Error Code. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 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 - * - ****************************************************************************** - */ - +/** + ****************************************************************************** + * @file stm32h7xx_nucleo_errno.h + * @author MCD Application Team + * @brief Error Code. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 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 STM32H7XX_NUCLEO_ERRNO_H #define STM32H7XX_NUCLEO_ERRNO_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Common Error codes */ -#define BSP_ERROR_NONE 0 -#define BSP_ERROR_NO_INIT -1 -#define BSP_ERROR_WRONG_PARAM -2 -#define BSP_ERROR_BUSY -3 -#define BSP_ERROR_PERIPH_FAILURE -4 -#define BSP_ERROR_COMPONENT_FAILURE -5 -#define BSP_ERROR_UNKNOWN_FAILURE -6 -#define BSP_ERROR_UNKNOWN_COMPONENT -7 -#define BSP_ERROR_BUS_FAILURE -8 -#define BSP_ERROR_CLOCK_FAILURE -9 -#define BSP_ERROR_MSP_FAILURE -10 -#define BSP_ERROR_FEATURE_NOT_SUPPORTED -11 +#define BSP_ERROR_NONE 0 +#define BSP_ERROR_NO_INIT -1 +#define BSP_ERROR_WRONG_PARAM -2 +#define BSP_ERROR_BUSY -3 +#define BSP_ERROR_PERIPH_FAILURE -4 +#define BSP_ERROR_COMPONENT_FAILURE -5 +#define BSP_ERROR_UNKNOWN_FAILURE -6 +#define BSP_ERROR_UNKNOWN_COMPONENT -7 +#define BSP_ERROR_BUS_FAILURE -8 +#define BSP_ERROR_CLOCK_FAILURE -9 +#define BSP_ERROR_MSP_FAILURE -10 +#define BSP_ERROR_FEATURE_NOT_SUPPORTED -11 #ifdef __cplusplus } #endif - + #endif /* STM32H7XX_NUCLEO_ERRNO_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/CMakeLists.txt b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/CMakeLists.txt index 154d0b1..e887564 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/CMakeLists.txt +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/CMakeLists.txt @@ -1,9 +1,9 @@ -target_sources(${TARGET_NAME} PRIVATE - freertos.c - hardware_init.cpp - stm32h7xx_hal_timebase_tim.c - stm32h7xx_nucleo.c - lan8742.c - stm32h7xx_it.c - syscalls.c -) \ No newline at end of file +target_sources( + ${TARGET_NAME} + PRIVATE freertos.c + hardware_init.cpp + stm32h7xx_hal_timebase_tim.c + stm32h7xx_nucleo.c + lan8742.c + stm32h7xx_it.c + syscalls.c) diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/freertos.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/freertos.c index fd8ca61..03b5c13 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/freertos.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/freertos.c @@ -1,60 +1,58 @@ /** - ****************************************************************************** - * File Name : freertos.c - * Description : Code for freertos applications - ****************************************************************************** - * This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * Copyright (c) 2018 STMicroelectronics International N.V. - * 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. Redistribution 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 other - * contributors to this software may be used to endorse or promote products - * derived from this software without specific written permission. - * 4. This software, including modifications and/or derivative works of this - * software, must execute solely and exclusively on microcontroller or - * microprocessor devices manufactured by or for STMicroelectronics. - * 5. Redistribution and use of this software other than as permitted under - * this license is void and will automatically terminate your rights under - * this license. - * - * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY - * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT - * SHALL STMICROELECTRONICS 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. - * - ****************************************************************************** - */ + ****************************************************************************** + * File Name : freertos.c + * Description : Code for freertos applications + ****************************************************************************** + * This notice applies to any and all portions of this file + * that are not between comment pairs USER CODE BEGIN and + * USER CODE END. Other portions of this file, whether + * inserted by the user or by software development tools + * are owned by their respective copyright owners. + * + * Copyright (c) 2018 STMicroelectronics International N.V. + * 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. Redistribution 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 other + * contributors to this software may be used to endorse or promote products + * derived from this software without specific written permission. + * 4. This software, including modifications and/or derivative works of this + * software, must execute solely and exclusively on microcontroller or + * microprocessor devices manufactured by or for STMicroelectronics. + * 5. Redistribution and use of this software other than as permitted under + * this license is void and will automatically terminate your rights under + * this license. + * + * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY + * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT + * SHALL STMICROELECTRONICS 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. + * + ****************************************************************************** + */ /* Includes ------------------------------------------------------------------*/ #include "FreeRTOS.h" -#include "task.h" #include "portmacro.h" +#include "task.h" /* USER CODE BEGIN Includes */ -void vRequestContextSwitchFromISR() { - portYIELD_FROM_ISR(pdTRUE); -} +void vRequestContextSwitchFromISR() { portYIELD_FROM_ISR(pdTRUE); } /* USER CODE END Includes */ @@ -73,7 +71,7 @@ void vRequestContextSwitchFromISR() { /* Hook prototypes */ /* USER CODE BEGIN Application */ - + /* USER CODE END Application */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/hardware_init.cpp b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/hardware_init.cpp index a0e6a41..a68a658 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/hardware_init.cpp +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/hardware_init.cpp @@ -6,12 +6,12 @@ #include "stm32h7xx_nucleo.h" #if OBSW_ADD_LWIP_COMPONENTS == 1 -#include -#include "example_common/stm32h7/networking/ethernetif.h" #include "example_common/stm32h7/networking/app_ethernet.h" -#include +#include "example_common/stm32h7/networking/ethernetif.h" +#include #include #include +#include #include #endif @@ -37,239 +37,235 @@ struct netif gnetif; bool debugAvailable = false; void performHardwareInit() { - /* Configure the MPU attributes as Device memory for ETH DMA descriptors */ - MPU_Config(); + /* Configure the MPU attributes as Device memory for ETH DMA descriptors */ + MPU_Config(); - /* Enable the CPU Cache */ - CPU_CACHE_Enable(); + /* Enable the CPU Cache */ + CPU_CACHE_Enable(); - MX_USART3_UART_Init(DEBUG_UART_BAUDRATE); + MX_USART3_UART_Init(DEBUG_UART_BAUDRATE); - HAL_StatusTypeDef retval = HAL_Init(); - if(retval != HAL_OK) { - printf("Error: HAL initialization failed!\n\r"); - } + HAL_StatusTypeDef retval = HAL_Init(); + if (retval != HAL_OK) { + printf("Error: HAL initialization failed!\n\r"); + } - /* Configure the system clock to 400 MHz */ - SystemClock_Config(); + /* Configure the system clock to 400 MHz */ + SystemClock_Config(); - BSP_Config(); + BSP_Config(); } -void MX_USART3_UART_Init(uint32_t baudRate) -{ - __HAL_RCC_USART3_CONFIG(RCC_USART3CLKSOURCE_HSI); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_USART3_CLK_ENABLE(); - /*Configure GPIO pins : PD8 PD9 */ - gpio_uart_init_struct.Pin = GPIO_PIN_8|GPIO_PIN_9; - gpio_uart_init_struct.Mode = GPIO_MODE_AF_PP; - gpio_uart_init_struct.Pull = GPIO_NOPULL; - gpio_uart_init_struct.Speed = GPIO_SPEED_FREQ_LOW; - gpio_uart_init_struct.Alternate = GPIO_AF7_USART3; - HAL_GPIO_Init(GPIOD, &gpio_uart_init_struct); +void MX_USART3_UART_Init(uint32_t baudRate) { + __HAL_RCC_USART3_CONFIG(RCC_USART3CLKSOURCE_HSI); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_USART3_CLK_ENABLE(); + /*Configure GPIO pins : PD8 PD9 */ + gpio_uart_init_struct.Pin = GPIO_PIN_8 | GPIO_PIN_9; + gpio_uart_init_struct.Mode = GPIO_MODE_AF_PP; + gpio_uart_init_struct.Pull = GPIO_NOPULL; + gpio_uart_init_struct.Speed = GPIO_SPEED_FREQ_LOW; + gpio_uart_init_struct.Alternate = GPIO_AF7_USART3; + HAL_GPIO_Init(GPIOD, &gpio_uart_init_struct); - int result; - huart3.Instance = USART3; - huart3.Init.BaudRate = baudRate; - 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.Init.ClockPrescaler = UART_PRESCALER_DIV1; - //huart3.Init.FIFOMode = UART_FIFOMODE_DISABLE; - //huart3.Init.TXFIFOThreshold = UART_TXFIFO_THRESHOLD_1_8; - //huart3.Init.RXFIFOThreshold = UART_RXFIFO_THRESHOLD_1_8; - huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - // we can't do error handling (simple print out first) here because UART3 is our print interface - result = HAL_UART_Init(&huart3); - if(result == HAL_OK) { - //print_uart3("\rUART3 configured successfully !\r\n\0"); - debugAvailable = true; - } + int result; + huart3.Instance = USART3; + huart3.Init.BaudRate = baudRate; + 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.Init.ClockPrescaler = UART_PRESCALER_DIV1; + // huart3.Init.FIFOMode = UART_FIFOMODE_DISABLE; + // huart3.Init.TXFIFOThreshold = UART_TXFIFO_THRESHOLD_1_8; + // huart3.Init.RXFIFOThreshold = UART_RXFIFO_THRESHOLD_1_8; + huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + // we can't do error handling (simple print out first) here because UART3 is + // our print interface + result = HAL_UART_Init(&huart3); + if (result == HAL_OK) { + // print_uart3("\rUART3 configured successfully !\r\n\0"); + debugAvailable = true; + } } - /** - * @brief System Clock Configuration - * The system Clock is configured as follow : - * System Clock source = PLL (HSE BYPASS) - * SYSCLK(Hz) = 400000000 (CPU Clock) - * HCLK(Hz) = 200000000 (AXI and AHBs Clock) - * AHB Prescaler = 2 - * D1 APB3 Prescaler = 2 (APB3 Clock 100MHz) - * D2 APB1 Prescaler = 2 (APB1 Clock 100MHz) - * D2 APB2 Prescaler = 2 (APB2 Clock 100MHz) - * D3 APB4 Prescaler = 2 (APB4 Clock 100MHz) - * HSE Frequency(Hz) = 8000000 - * PLL_M = 4 - * PLL_N = 400 - * PLL_P = 2 - * PLL_Q = 4 - * PLL_R = 2 - * VDD(V) = 3.3 - * Flash Latency(WS) = 4 - * @param None - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_ClkInitTypeDef RCC_ClkInitStruct; - RCC_OscInitTypeDef RCC_OscInitStruct; - HAL_StatusTypeDef ret = HAL_OK; + * @brief System Clock Configuration + * The system Clock is configured as follow : + * System Clock source = PLL (HSE BYPASS) + * SYSCLK(Hz) = 400000000 (CPU Clock) + * HCLK(Hz) = 200000000 (AXI and AHBs Clock) + * AHB Prescaler = 2 + * D1 APB3 Prescaler = 2 (APB3 Clock 100MHz) + * D2 APB1 Prescaler = 2 (APB1 Clock 100MHz) + * D2 APB2 Prescaler = 2 (APB2 Clock 100MHz) + * D3 APB4 Prescaler = 2 (APB4 Clock 100MHz) + * HSE Frequency(Hz) = 8000000 + * PLL_M = 4 + * PLL_N = 400 + * PLL_P = 2 + * PLL_Q = 4 + * PLL_R = 2 + * VDD(V) = 3.3 + * Flash Latency(WS) = 4 + * @param None + * @retval None + */ +void SystemClock_Config(void) { + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_OscInitTypeDef RCC_OscInitStruct; + HAL_StatusTypeDef ret = HAL_OK; - /*!< Supply configuration update enable */ - MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, 0); // @suppress("Field cannot be resolved") + /*!< Supply configuration update enable */ + MODIFY_REG(PWR->CR3, PWR_CR3_SCUEN, + 0); // @suppress("Field cannot be resolved") - /* The voltage scaling allows optimizing the power consumption when the device is - clocked below the maximum system frequency, to update the voltage scaling value - regarding system frequency refer to product datasheet. */ - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); // @suppress("Field cannot be resolved") + /* The voltage scaling allows optimizing the power consumption when the device +is clocked below the maximum system frequency, to update the voltage scaling +value regarding system frequency refer to product datasheet. */ + __HAL_PWR_VOLTAGESCALING_CONFIG( + PWR_REGULATOR_VOLTAGE_SCALE1); // @suppress("Field cannot be resolved") - while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} // @suppress("Field cannot be resolved") + while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) { + } // @suppress("Field cannot be resolved") - /* Enable D2 domain SRAM3 Clock (0x30040000 AXI)*/ - __HAL_RCC_D2SRAM3_CLK_ENABLE(); // @suppress("Field cannot be resolved") + /* Enable D2 domain SRAM3 Clock (0x30040000 AXI)*/ + __HAL_RCC_D2SRAM3_CLK_ENABLE(); // @suppress("Field cannot be resolved") - /* Enable HSE Oscillator and activate PLL with HSE as source */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; - RCC_OscInitStruct.HSIState = RCC_HSI_OFF; - RCC_OscInitStruct.CSIState = RCC_CSI_OFF; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + /* Enable HSE Oscillator and activate PLL with HSE as source */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; + RCC_OscInitStruct.HSIState = RCC_HSI_OFF; + RCC_OscInitStruct.CSIState = RCC_CSI_OFF; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 4; - RCC_OscInitStruct.PLL.PLLN = 400; - RCC_OscInitStruct.PLL.PLLP = 2; - RCC_OscInitStruct.PLL.PLLR = 2; - RCC_OscInitStruct.PLL.PLLQ = 4; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 400; + RCC_OscInitStruct.PLL.PLLP = 2; + RCC_OscInitStruct.PLL.PLLR = 2; + RCC_OscInitStruct.PLL.PLLQ = 4; - RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; - RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; - ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); - if(ret != HAL_OK) - { - while(1); - } + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2; + ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); + if (ret != HAL_OK) { + while (1) + ; + } - /* Select PLL as system clock source and configure bus clocks dividers */ - RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | - RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | - RCC_CLOCKTYPE_D3PCLK1); + /* Select PLL as system clock source and configure bus clocks dividers */ + RCC_ClkInitStruct.ClockType = + (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_D1PCLK1 | + RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D3PCLK1); - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; - RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; - RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; - RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; - RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; - ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4); - if(ret != HAL_OK) - { - while(1); - } + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4); + if (ret != HAL_OK) { + while (1) + ; + } } /*Configure the MPU attributes */ -void MPU_Config(void) -{ - MPU_Region_InitTypeDef MPU_InitStruct; +void MPU_Config(void) { + MPU_Region_InitTypeDef MPU_InitStruct; - /* Disable the MPU */ - HAL_MPU_Disable(); + /* Disable the MPU */ + HAL_MPU_Disable(); - /* Configure the MPU attributes as Device not cacheable - for ETH DMA descriptors */ - MPU_InitStruct.Enable = MPU_REGION_ENABLE; - MPU_InitStruct.BaseAddress = 0x30040000; - MPU_InitStruct.Size = MPU_REGION_SIZE_256B; - MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; - MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE; - MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; - MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; - MPU_InitStruct.Number = MPU_REGION_NUMBER0; - MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; - MPU_InitStruct.SubRegionDisable = 0x00; - MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; + /* Configure the MPU attributes as Device not cacheable +for ETH DMA descriptors */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.BaseAddress = 0x30040000; + MPU_InitStruct.Size = MPU_REGION_SIZE_256B; + MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; + MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.SubRegionDisable = 0x00; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; - HAL_MPU_ConfigRegion(&MPU_InitStruct); + HAL_MPU_ConfigRegion(&MPU_InitStruct); - /* Configure the MPU attributes as Cacheable write through - for LwIP RAM heap which contains the Tx buffers */ - MPU_InitStruct.Enable = MPU_REGION_ENABLE; - MPU_InitStruct.BaseAddress = 0x30044000; - MPU_InitStruct.Size = MPU_REGION_SIZE_16KB; - MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; - MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; - MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; - MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; - MPU_InitStruct.Number = MPU_REGION_NUMBER1; - MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; - MPU_InitStruct.SubRegionDisable = 0x00; - MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; + /* Configure the MPU attributes as Cacheable write through +for LwIP RAM heap which contains the Tx buffers */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.BaseAddress = 0x30044000; + MPU_InitStruct.Size = MPU_REGION_SIZE_16KB; + MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER1; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; + MPU_InitStruct.SubRegionDisable = 0x00; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; - HAL_MPU_ConfigRegion(&MPU_InitStruct); + HAL_MPU_ConfigRegion(&MPU_InitStruct); - /* Enable the MPU */ - HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); + /* Enable the MPU */ + HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); } /*CPU L1-Cache enable*/ -void CPU_CACHE_Enable(void) -{ - /* Enable I-Cache */ - SCB_EnableICache(); +void CPU_CACHE_Enable(void) { + /* Enable I-Cache */ + SCB_EnableICache(); - /* Enable D-Cache */ - SCB_EnableDCache(); + /* Enable D-Cache */ + SCB_EnableDCache(); } -void BSP_Config(void) -{ - BSP_LED_Init(LED1); - BSP_LED_Init(LED2); - BSP_LED_Init(LED3); +void BSP_Config(void) { + BSP_LED_Init(LED1); + BSP_LED_Init(LED2); + BSP_LED_Init(LED3); } #if OBSW_ADD_LWIP_COMPONENTS == 1 -void Netif_Config(void) -{ - ip_addr_t ipaddr; - ip_addr_t netmask; - ip_addr_t gw; +void Netif_Config(void) { + ip_addr_t ipaddr; + ip_addr_t netmask; + ip_addr_t gw; #if LWIP_DHCP - ip_addr_set_zero_ip4(&ipaddr); - ip_addr_set_zero_ip4(&netmask); - ip_addr_set_zero_ip4(&gw); + ip_addr_set_zero_ip4(&ipaddr); + ip_addr_set_zero_ip4(&netmask); + ip_addr_set_zero_ip4(&gw); #else - /* IP address default setting */ - set_lwip_addresses(&ipaddr, &netmask, &gw); + /* IP address default setting */ + set_lwip_addresses(&ipaddr, &netmask, &gw); #endif - /* add the network interface */ - struct netif* netif_valid = netif_add(&gnetif, (ip4_addr_t*)&ipaddr, - (ip4_addr_t*)&netmask, (ip4_addr_t*) &gw, NULL, ðernetif_init, - ðernet_input); - if(netif_valid == NULL) { - printf("Error: netif initialization failed!\n\r"); - return; - } - /* Registers the default network interface */ - netif_set_default(&gnetif); + /* add the network interface */ + struct netif *netif_valid = + netif_add(&gnetif, (ip4_addr_t *)&ipaddr, (ip4_addr_t *)&netmask, + (ip4_addr_t *)&gw, NULL, ðernetif_init, ðernet_input); + if (netif_valid == NULL) { + printf("Error: netif initialization failed!\n\r"); + return; + } + /* Registers the default network interface */ + netif_set_default(&gnetif); - networking::ethernetLinkStatusUpdated(&gnetif); + networking::ethernetLinkStatusUpdated(&gnetif); #if LWIP_NETIF_LINK_CALLBACK - netif_set_link_callback(&gnetif, networking::ethernetLinkStatusUpdated); + netif_set_link_callback(&gnetif, networking::ethernetLinkStatusUpdated); #endif } #endif /* OBSW_ADD_LWIP_COMPONENTS == 1 */ - diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/lan8742.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/lan8742.c index a268393..cf01fb0 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/lan8742.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/lan8742.c @@ -1,664 +1,566 @@ -/** - ****************************************************************************** - * @file lan8742.c - * @author MCD Application Team - * @brief This file provides a set of functions needed to manage the LAN742 - * PHY 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 - * - ****************************************************************************** - */ +/** + ****************************************************************************** + * @file lan8742.c + * @author MCD Application Team + * @brief This file provides a set of functions needed to manage the LAN742 + * PHY 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 + * + ****************************************************************************** + */ /* Includes ------------------------------------------------------------------*/ #include "lan8742.h" /** @addtogroup BSP - * @{ - */ + * @{ + */ /** @addtogroup Component - * @{ - */ - + * @{ + */ + /** @defgroup LAN8742 LAN8742 - * @{ - */ - + * @{ + */ + /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /** @defgroup LAN8742_Private_Defines LAN8742 Private Defines - * @{ - */ -#define LAN8742_SW_RESET_TO ((uint32_t)500U) -#define LAN8742_INIT_TO ((uint32_t)2000U) -#define LAN8742_MAX_DEV_ADDR ((uint32_t)31U) + * @{ + */ +#define LAN8742_SW_RESET_TO ((uint32_t)500U) +#define LAN8742_INIT_TO ((uint32_t)2000U) +#define LAN8742_MAX_DEV_ADDR ((uint32_t)31U) /** - * @} - */ - + * @} + */ + /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** @defgroup LAN8742_Private_Functions LAN8742 Private Functions - * @{ - */ - + * @{ + */ + /** - * @brief Register IO functions to component object - * @param pObj: device object of LAN8742_Object_t. - * @param ioctx: holds device IO functions. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_ERROR if missing mandatory function - */ -int32_t LAN8742_RegisterBusIO(lan8742_Object_t *pObj, lan8742_IOCtx_t *ioctx) -{ - if(!pObj || !ioctx->ReadReg || !ioctx->WriteReg || !ioctx->GetTick) - { + * @brief Register IO functions to component object + * @param pObj: device object of LAN8742_Object_t. + * @param ioctx: holds device IO functions. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_ERROR if missing mandatory function + */ +int32_t LAN8742_RegisterBusIO(lan8742_Object_t *pObj, lan8742_IOCtx_t *ioctx) { + if (!pObj || !ioctx->ReadReg || !ioctx->WriteReg || !ioctx->GetTick) { return LAN8742_STATUS_ERROR; } - + pObj->IO.Init = ioctx->Init; pObj->IO.DeInit = ioctx->DeInit; pObj->IO.ReadReg = ioctx->ReadReg; pObj->IO.WriteReg = ioctx->WriteReg; pObj->IO.GetTick = ioctx->GetTick; - + return LAN8742_STATUS_OK; } /** - * @brief Initialize the lan8742 and configure the needed hardware resources - * @param pObj: device object LAN8742_Object_t. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_ADDRESS_ERROR if cannot find device address - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - * LAN8742_STATUS_RESET_TIMEOUT if cannot perform a software reset - */ - int32_t LAN8742_Init(lan8742_Object_t *pObj) - { - uint32_t tickstart = 0, regvalue = 0, addr = 0; - int32_t status = LAN8742_STATUS_OK; - - if(pObj->Is_Initialized == 0) - { - if(pObj->IO.Init != 0) - { - /* GPIO and Clocks initialization */ - pObj->IO.Init(); - } - - /* for later check */ - pObj->DevAddr = LAN8742_MAX_DEV_ADDR + 1; - - /* Get the device address from special mode register */ - for(addr = 0; addr <= LAN8742_MAX_DEV_ADDR; addr ++) - { - if(pObj->IO.ReadReg(addr, LAN8742_SMR, ®value) < 0) - { - status = LAN8742_STATUS_READ_ERROR; - /* Can't read from this device address - continue with next address */ - continue; - } - - if((regvalue & LAN8742_SMR_PHY_ADDR) == addr) - { - pObj->DevAddr = addr; - status = LAN8742_STATUS_OK; - break; - } - } - - if(pObj->DevAddr > LAN8742_MAX_DEV_ADDR) - { - status = LAN8742_STATUS_ADDRESS_ERROR; - } - - /* if device address is matched */ - if(status == LAN8742_STATUS_OK) - { - /* set a software reset */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, LAN8742_BCR_SOFT_RESET) >= 0) - { - /* get software reset status */ - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) >= 0) - { - tickstart = pObj->IO.GetTick(); - - /* wait until software reset is done or timeout occured */ - while(regvalue & LAN8742_BCR_SOFT_RESET) - { - if((pObj->IO.GetTick() - tickstart) <= LAN8742_SW_RESET_TO) - { - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) < 0) - { - status = LAN8742_STATUS_READ_ERROR; - break; - } - } - else - { - status = LAN8742_STATUS_RESET_TIMEOUT; - break; - } - } - } - else - { - status = LAN8742_STATUS_READ_ERROR; - } - } - else - { - status = LAN8742_STATUS_WRITE_ERROR; - } - } - } - - if(status == LAN8742_STATUS_OK) - { - tickstart = pObj->IO.GetTick(); - - /* Wait for 2s to perform initialization */ - while((pObj->IO.GetTick() - tickstart) <= LAN8742_INIT_TO) - { - } - pObj->Is_Initialized = 1; - } - - return status; - } + * @brief Initialize the lan8742 and configure the needed hardware resources + * @param pObj: device object LAN8742_Object_t. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_ADDRESS_ERROR if cannot find device address + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + * LAN8742_STATUS_RESET_TIMEOUT if cannot perform a software reset + */ +int32_t LAN8742_Init(lan8742_Object_t *pObj) { + uint32_t tickstart = 0, regvalue = 0, addr = 0; + int32_t status = LAN8742_STATUS_OK; + + if (pObj->Is_Initialized == 0) { + if (pObj->IO.Init != 0) { + /* GPIO and Clocks initialization */ + pObj->IO.Init(); + } + + /* for later check */ + pObj->DevAddr = LAN8742_MAX_DEV_ADDR + 1; + + /* Get the device address from special mode register */ + for (addr = 0; addr <= LAN8742_MAX_DEV_ADDR; addr++) { + if (pObj->IO.ReadReg(addr, LAN8742_SMR, ®value) < 0) { + status = LAN8742_STATUS_READ_ERROR; + /* Can't read from this device address + continue with next address */ + continue; + } + + if ((regvalue & LAN8742_SMR_PHY_ADDR) == addr) { + pObj->DevAddr = addr; + status = LAN8742_STATUS_OK; + break; + } + } + + if (pObj->DevAddr > LAN8742_MAX_DEV_ADDR) { + status = LAN8742_STATUS_ADDRESS_ERROR; + } + + /* if device address is matched */ + if (status == LAN8742_STATUS_OK) { + /* set a software reset */ + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, + LAN8742_BCR_SOFT_RESET) >= 0) { + /* get software reset status */ + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) >= 0) { + tickstart = pObj->IO.GetTick(); + + /* wait until software reset is done or timeout occured */ + while (regvalue & LAN8742_BCR_SOFT_RESET) { + if ((pObj->IO.GetTick() - tickstart) <= LAN8742_SW_RESET_TO) { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) < 0) { + status = LAN8742_STATUS_READ_ERROR; + break; + } + } else { + status = LAN8742_STATUS_RESET_TIMEOUT; + break; + } + } + } else { + status = LAN8742_STATUS_READ_ERROR; + } + } else { + status = LAN8742_STATUS_WRITE_ERROR; + } + } + } + + if (status == LAN8742_STATUS_OK) { + tickstart = pObj->IO.GetTick(); + + /* Wait for 2s to perform initialization */ + while ((pObj->IO.GetTick() - tickstart) <= LAN8742_INIT_TO) { + } + pObj->Is_Initialized = 1; + } + + return status; +} /** - * @brief De-Initialize the lan8742 and it's hardware resources - * @param pObj: device object LAN8742_Object_t. - * @retval None - */ -int32_t LAN8742_DeInit(lan8742_Object_t *pObj) -{ - if(pObj->Is_Initialized) - { - if(pObj->IO.DeInit != 0) - { - if(pObj->IO.DeInit() < 0) - { + * @brief De-Initialize the lan8742 and it's hardware resources + * @param pObj: device object LAN8742_Object_t. + * @retval None + */ +int32_t LAN8742_DeInit(lan8742_Object_t *pObj) { + if (pObj->Is_Initialized) { + if (pObj->IO.DeInit != 0) { + if (pObj->IO.DeInit() < 0) { return LAN8742_STATUS_ERROR; } } - - pObj->Is_Initialized = 0; + + pObj->Is_Initialized = 0; } - + return LAN8742_STATUS_OK; } /** - * @brief Disable the LAN8742 power down mode. - * @param pObj: device object LAN8742_Object_t. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_DisablePowerDownMode(lan8742_Object_t *pObj) -{ + * @brief Disable the LAN8742 power down mode. + * @param pObj: device object LAN8742_Object_t. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_DisablePowerDownMode(lan8742_Object_t *pObj) { uint32_t readval = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) { readval &= ~LAN8742_BCR_POWER_DOWN; - + /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) - { - status = LAN8742_STATUS_WRITE_ERROR; + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) { + status = LAN8742_STATUS_WRITE_ERROR; } - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Enable the LAN8742 power down mode. - * @param pObj: device object LAN8742_Object_t. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_EnablePowerDownMode(lan8742_Object_t *pObj) -{ + * @brief Enable the LAN8742 power down mode. + * @param pObj: device object LAN8742_Object_t. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_EnablePowerDownMode(lan8742_Object_t *pObj) { uint32_t readval = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) { readval |= LAN8742_BCR_POWER_DOWN; - + /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) - { - status = LAN8742_STATUS_WRITE_ERROR; + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) { + status = LAN8742_STATUS_WRITE_ERROR; } - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Start the auto negotiation process. - * @param pObj: device object LAN8742_Object_t. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_StartAutoNego(lan8742_Object_t *pObj) -{ + * @brief Start the auto negotiation process. + * @param pObj: device object LAN8742_Object_t. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_StartAutoNego(lan8742_Object_t *pObj) { uint32_t readval = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) { readval |= LAN8742_BCR_AUTONEGO_EN; - + /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) - { - status = LAN8742_STATUS_WRITE_ERROR; + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) { + status = LAN8742_STATUS_WRITE_ERROR; } - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Get the link state of LAN8742 device. - * @param pObj: Pointer to device object. - * @param pLinkState: Pointer to link state - * @retval LAN8742_STATUS_LINK_DOWN if link is down - * LAN8742_STATUS_AUTONEGO_NOTDONE if Auto nego not completed - * LAN8742_STATUS_100MBITS_FULLDUPLEX if 100Mb/s FD - * LAN8742_STATUS_100MBITS_HALFDUPLEX if 100Mb/s HD - * LAN8742_STATUS_10MBITS_FULLDUPLEX if 10Mb/s FD - * LAN8742_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_GetLinkState(lan8742_Object_t *pObj) -{ + * @brief Get the link state of LAN8742 device. + * @param pObj: Pointer to device object. + * @param pLinkState: Pointer to link state + * @retval LAN8742_STATUS_LINK_DOWN if link is down + * LAN8742_STATUS_AUTONEGO_NOTDONE if Auto nego not completed + * LAN8742_STATUS_100MBITS_FULLDUPLEX if 100Mb/s FD + * LAN8742_STATUS_100MBITS_HALFDUPLEX if 100Mb/s HD + * LAN8742_STATUS_10MBITS_FULLDUPLEX if 10Mb/s FD + * LAN8742_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_GetLinkState(lan8742_Object_t *pObj) { uint32_t readval = 0; - + /* Read Status register */ - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) - { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) { return LAN8742_STATUS_READ_ERROR; } - + /* Read Status register again */ - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) - { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) { return LAN8742_STATUS_READ_ERROR; } - - if((readval & LAN8742_BSR_LINK_STATUS) == 0) - { + + if ((readval & LAN8742_BSR_LINK_STATUS) == 0) { /* Return Link Down status */ - return LAN8742_STATUS_LINK_DOWN; + return LAN8742_STATUS_LINK_DOWN; } - + /* Check Auto negotiaition */ - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) < 0) - { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) < 0) { return LAN8742_STATUS_READ_ERROR; } - - if((readval & LAN8742_BCR_AUTONEGO_EN) != LAN8742_BCR_AUTONEGO_EN) - { - if(((readval & LAN8742_BCR_SPEED_SELECT) == LAN8742_BCR_SPEED_SELECT) && ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE)) - { + + if ((readval & LAN8742_BCR_AUTONEGO_EN) != LAN8742_BCR_AUTONEGO_EN) { + if (((readval & LAN8742_BCR_SPEED_SELECT) == LAN8742_BCR_SPEED_SELECT) && + ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE)) { return LAN8742_STATUS_100MBITS_FULLDUPLEX; - } - else if ((readval & LAN8742_BCR_SPEED_SELECT) == LAN8742_BCR_SPEED_SELECT) - { + } else if ((readval & LAN8742_BCR_SPEED_SELECT) == + LAN8742_BCR_SPEED_SELECT) { return LAN8742_STATUS_100MBITS_HALFDUPLEX; - } - else if ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE) - { + } else if ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE) { return LAN8742_STATUS_10MBITS_FULLDUPLEX; - } - else - { + } else { return LAN8742_STATUS_10MBITS_HALFDUPLEX; - } - } - else /* Auto Nego enabled */ + } + } else /* Auto Nego enabled */ { - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_PHYSCSR, &readval) < 0) - { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_PHYSCSR, &readval) < 0) { return LAN8742_STATUS_READ_ERROR; } - + /* Check if auto nego not done */ - if((readval & LAN8742_PHYSCSR_AUTONEGO_DONE) == 0) - { + if ((readval & LAN8742_PHYSCSR_AUTONEGO_DONE) == 0) { return LAN8742_STATUS_AUTONEGO_NOTDONE; } - - if((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_100BTX_FD) - { + + if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_100BTX_FD) { return LAN8742_STATUS_100MBITS_FULLDUPLEX; - } - else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_100BTX_HD) - { + } else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == + LAN8742_PHYSCSR_100BTX_HD) { return LAN8742_STATUS_100MBITS_HALFDUPLEX; - } - else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_10BT_FD) - { + } else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == + LAN8742_PHYSCSR_10BT_FD) { return LAN8742_STATUS_10MBITS_FULLDUPLEX; - } - else - { + } else { return LAN8742_STATUS_10MBITS_HALFDUPLEX; - } + } } } /** - * @brief Set the link state of LAN8742 device. - * @param pObj: Pointer to device object. - * @param pLinkState: link state can be one of the following - * LAN8742_STATUS_100MBITS_FULLDUPLEX if 100Mb/s FD - * LAN8742_STATUS_100MBITS_HALFDUPLEX if 100Mb/s HD - * LAN8742_STATUS_10MBITS_FULLDUPLEX if 10Mb/s FD - * LAN8742_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_ERROR if parameter error - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_SetLinkState(lan8742_Object_t *pObj, uint32_t LinkState) -{ + * @brief Set the link state of LAN8742 device. + * @param pObj: Pointer to device object. + * @param pLinkState: link state can be one of the following + * LAN8742_STATUS_100MBITS_FULLDUPLEX if 100Mb/s FD + * LAN8742_STATUS_100MBITS_HALFDUPLEX if 100Mb/s HD + * LAN8742_STATUS_10MBITS_FULLDUPLEX if 10Mb/s FD + * LAN8742_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_ERROR if parameter error + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_SetLinkState(lan8742_Object_t *pObj, uint32_t LinkState) { uint32_t bcrvalue = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &bcrvalue) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &bcrvalue) >= 0) { /* Disable link config (Auto nego, speed and duplex) */ - bcrvalue &= ~(LAN8742_BCR_AUTONEGO_EN | LAN8742_BCR_SPEED_SELECT | LAN8742_BCR_DUPLEX_MODE); - - if(LinkState == LAN8742_STATUS_100MBITS_FULLDUPLEX) - { + bcrvalue &= ~(LAN8742_BCR_AUTONEGO_EN | LAN8742_BCR_SPEED_SELECT | + LAN8742_BCR_DUPLEX_MODE); + + if (LinkState == LAN8742_STATUS_100MBITS_FULLDUPLEX) { bcrvalue |= (LAN8742_BCR_SPEED_SELECT | LAN8742_BCR_DUPLEX_MODE); - } - else if (LinkState == LAN8742_STATUS_100MBITS_HALFDUPLEX) - { + } else if (LinkState == LAN8742_STATUS_100MBITS_HALFDUPLEX) { bcrvalue |= LAN8742_BCR_SPEED_SELECT; - } - else if (LinkState == LAN8742_STATUS_10MBITS_FULLDUPLEX) - { + } else if (LinkState == LAN8742_STATUS_10MBITS_FULLDUPLEX) { bcrvalue |= LAN8742_BCR_DUPLEX_MODE; - } - else - { + } else { /* Wrong link status parameter */ status = LAN8742_STATUS_ERROR; - } - } - else - { + } + } else { status = LAN8742_STATUS_READ_ERROR; } - - if(status == LAN8742_STATUS_OK) - { + + if (status == LAN8742_STATUS_OK) { /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, bcrvalue) < 0) - { + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, bcrvalue) < 0) { status = LAN8742_STATUS_WRITE_ERROR; } } - + return status; } /** - * @brief Enable loopback mode. - * @param pObj: Pointer to device object. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_EnableLoopbackMode(lan8742_Object_t *pObj) -{ + * @brief Enable loopback mode. + * @param pObj: Pointer to device object. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_EnableLoopbackMode(lan8742_Object_t *pObj) { uint32_t readval = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) { readval |= LAN8742_BCR_LOOPBACK; - + /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) - { + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) { status = LAN8742_STATUS_WRITE_ERROR; } - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Disable loopback mode. - * @param pObj: Pointer to device object. - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_DisableLoopbackMode(lan8742_Object_t *pObj) -{ + * @brief Disable loopback mode. + * @param pObj: Pointer to device object. + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_DisableLoopbackMode(lan8742_Object_t *pObj) { uint32_t readval = 0; int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) - { + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) >= 0) { readval &= ~LAN8742_BCR_LOOPBACK; - - /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) - { - status = LAN8742_STATUS_WRITE_ERROR; - } - } - else - { - status = LAN8742_STATUS_READ_ERROR; - } - - return status; -} -/** - * @brief Enable IT source. - * @param pObj: Pointer to device object. - * @param Interrupt: IT source to be enabled - * should be a value or a combination of the following: - * LAN8742_WOL_IT - * LAN8742_ENERGYON_IT - * LAN8742_AUTONEGO_COMPLETE_IT - * LAN8742_REMOTE_FAULT_IT - * LAN8742_LINK_DOWN_IT - * LAN8742_AUTONEGO_LP_ACK_IT - * LAN8742_PARALLEL_DETECTION_FAULT_IT - * LAN8742_AUTONEGO_PAGE_RECEIVED_IT - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_EnableIT(lan8742_Object_t *pObj, uint32_t Interrupt) -{ - uint32_t readval = 0; - int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_IMR, &readval) >= 0) - { - readval |= Interrupt; - /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_IMR, readval) < 0) - { - status = LAN8742_STATUS_WRITE_ERROR; - } - } - else - { - status = LAN8742_STATUS_READ_ERROR; - } - - return status; -} - -/** - * @brief Disable IT source. - * @param pObj: Pointer to device object. - * @param Interrupt: IT source to be disabled - * should be a value or a combination of the following: - * LAN8742_WOL_IT - * LAN8742_ENERGYON_IT - * LAN8742_AUTONEGO_COMPLETE_IT - * LAN8742_REMOTE_FAULT_IT - * LAN8742_LINK_DOWN_IT - * LAN8742_AUTONEGO_LP_ACK_IT - * LAN8742_PARALLEL_DETECTION_FAULT_IT - * LAN8742_AUTONEGO_PAGE_RECEIVED_IT - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - * LAN8742_STATUS_WRITE_ERROR if connot write to register - */ -int32_t LAN8742_DisableIT(lan8742_Object_t *pObj, uint32_t Interrupt) -{ - uint32_t readval = 0; - int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_IMR, &readval) >= 0) - { - readval &= ~Interrupt; - - /* Apply configuration */ - if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_IMR, readval) < 0) - { + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, readval) < 0) { status = LAN8742_STATUS_WRITE_ERROR; } - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Clear IT flag. - * @param pObj: Pointer to device object. - * @param Interrupt: IT flag to be cleared - * should be a value or a combination of the following: - * LAN8742_WOL_IT - * LAN8742_ENERGYON_IT - * LAN8742_AUTONEGO_COMPLETE_IT - * LAN8742_REMOTE_FAULT_IT - * LAN8742_LINK_DOWN_IT - * LAN8742_AUTONEGO_LP_ACK_IT - * LAN8742_PARALLEL_DETECTION_FAULT_IT - * LAN8742_AUTONEGO_PAGE_RECEIVED_IT - * @retval LAN8742_STATUS_OK if OK - * LAN8742_STATUS_READ_ERROR if connot read register - */ -int32_t LAN8742_ClearIT(lan8742_Object_t *pObj, uint32_t Interrupt) -{ + * @brief Enable IT source. + * @param pObj: Pointer to device object. + * @param Interrupt: IT source to be enabled + * should be a value or a combination of the following: + * LAN8742_WOL_IT + * LAN8742_ENERGYON_IT + * LAN8742_AUTONEGO_COMPLETE_IT + * LAN8742_REMOTE_FAULT_IT + * LAN8742_LINK_DOWN_IT + * LAN8742_AUTONEGO_LP_ACK_IT + * LAN8742_PARALLEL_DETECTION_FAULT_IT + * LAN8742_AUTONEGO_PAGE_RECEIVED_IT + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_EnableIT(lan8742_Object_t *pObj, uint32_t Interrupt) { uint32_t readval = 0; - int32_t status = LAN8742_STATUS_OK; - - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_ISFR, &readval) < 0) - { - status = LAN8742_STATUS_READ_ERROR; + int32_t status = LAN8742_STATUS_OK; + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_IMR, &readval) >= 0) { + readval |= Interrupt; + + /* Apply configuration */ + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_IMR, readval) < 0) { + status = LAN8742_STATUS_WRITE_ERROR; + } + } else { + status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @brief Get IT Flag status. - * @param pObj: Pointer to device object. - * @param Interrupt: IT Flag to be checked, - * should be a value or a combination of the following: - * LAN8742_WOL_IT - * LAN8742_ENERGYON_IT - * LAN8742_AUTONEGO_COMPLETE_IT - * LAN8742_REMOTE_FAULT_IT - * LAN8742_LINK_DOWN_IT - * LAN8742_AUTONEGO_LP_ACK_IT - * LAN8742_PARALLEL_DETECTION_FAULT_IT - * LAN8742_AUTONEGO_PAGE_RECEIVED_IT - * @retval 1 IT flag is SET - * 0 IT flag is RESET - * LAN8742_STATUS_READ_ERROR if connot read register - */ -int32_t LAN8742_GetITStatus(lan8742_Object_t *pObj, uint32_t Interrupt) -{ + * @brief Disable IT source. + * @param pObj: Pointer to device object. + * @param Interrupt: IT source to be disabled + * should be a value or a combination of the following: + * LAN8742_WOL_IT + * LAN8742_ENERGYON_IT + * LAN8742_AUTONEGO_COMPLETE_IT + * LAN8742_REMOTE_FAULT_IT + * LAN8742_LINK_DOWN_IT + * LAN8742_AUTONEGO_LP_ACK_IT + * LAN8742_PARALLEL_DETECTION_FAULT_IT + * LAN8742_AUTONEGO_PAGE_RECEIVED_IT + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + * LAN8742_STATUS_WRITE_ERROR if connot write to register + */ +int32_t LAN8742_DisableIT(lan8742_Object_t *pObj, uint32_t Interrupt) { + uint32_t readval = 0; + int32_t status = LAN8742_STATUS_OK; + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_IMR, &readval) >= 0) { + readval &= ~Interrupt; + + /* Apply configuration */ + if (pObj->IO.WriteReg(pObj->DevAddr, LAN8742_IMR, readval) < 0) { + status = LAN8742_STATUS_WRITE_ERROR; + } + } else { + status = LAN8742_STATUS_READ_ERROR; + } + + return status; +} + +/** + * @brief Clear IT flag. + * @param pObj: Pointer to device object. + * @param Interrupt: IT flag to be cleared + * should be a value or a combination of the following: + * LAN8742_WOL_IT + * LAN8742_ENERGYON_IT + * LAN8742_AUTONEGO_COMPLETE_IT + * LAN8742_REMOTE_FAULT_IT + * LAN8742_LINK_DOWN_IT + * LAN8742_AUTONEGO_LP_ACK_IT + * LAN8742_PARALLEL_DETECTION_FAULT_IT + * LAN8742_AUTONEGO_PAGE_RECEIVED_IT + * @retval LAN8742_STATUS_OK if OK + * LAN8742_STATUS_READ_ERROR if connot read register + */ +int32_t LAN8742_ClearIT(lan8742_Object_t *pObj, uint32_t Interrupt) { + uint32_t readval = 0; + int32_t status = LAN8742_STATUS_OK; + + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_ISFR, &readval) < 0) { + status = LAN8742_STATUS_READ_ERROR; + } + + return status; +} + +/** + * @brief Get IT Flag status. + * @param pObj: Pointer to device object. + * @param Interrupt: IT Flag to be checked, + * should be a value or a combination of the following: + * LAN8742_WOL_IT + * LAN8742_ENERGYON_IT + * LAN8742_AUTONEGO_COMPLETE_IT + * LAN8742_REMOTE_FAULT_IT + * LAN8742_LINK_DOWN_IT + * LAN8742_AUTONEGO_LP_ACK_IT + * LAN8742_PARALLEL_DETECTION_FAULT_IT + * LAN8742_AUTONEGO_PAGE_RECEIVED_IT + * @retval 1 IT flag is SET + * 0 IT flag is RESET + * LAN8742_STATUS_READ_ERROR if connot read register + */ +int32_t LAN8742_GetITStatus(lan8742_Object_t *pObj, uint32_t Interrupt) { uint32_t readval = 0; int32_t status = 0; - if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_ISFR, &readval) >= 0) - { + if (pObj->IO.ReadReg(pObj->DevAddr, LAN8742_ISFR, &readval) >= 0) { status = ((readval & Interrupt) == Interrupt); - } - else - { + } else { status = LAN8742_STATUS_READ_ERROR; } - + return status; } /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_hal_timebase_tim.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_hal_timebase_tim.c index 648df0f..2ee2ccf 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_hal_timebase_tim.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_hal_timebase_tim.c @@ -1,43 +1,46 @@ /** - ****************************************************************************** - * @file stm32h7xx_hal_timebase_tim.c - * @author MCD Application Team - * @brief HAL time base based on the hardware TIM. - * - * This file overrides the native HAL time base functions (defined as weak) - * the TIM time base: - * + Intializes the TIM peripheral generate a Period elapsed Event each 1ms - * + HAL_IncTick is called inside HAL_TIM_PeriodElapsedCallback ie each 1ms - * - ****************************************************************************** - * @attention - * - *

© COPYRIGHT(c) 2017 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. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32h7xx_hal_timebase_tim.c + * @author MCD Application Team + * @brief HAL time base based on the hardware TIM. + * + * This file overrides the native HAL time base functions (defined as + *weak) the TIM time base: + * + Intializes the TIM peripheral generate a Period elapsed Event + *each 1ms + * + HAL_IncTick is called inside HAL_TIM_PeriodElapsedCallback ie + *each 1ms + * + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2017 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. + * + ****************************************************************************** + */ /* Includes ------------------------------------------------------------------*/ #include "stm32h7xx_hal.h" @@ -46,58 +49,55 @@ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ -TIM_HandleTypeDef TimHandle; +TIM_HandleTypeDef TimHandle; /* Private function prototypes -----------------------------------------------*/ void TIM6_DAC_IRQHandler(void); /* Private functions ---------------------------------------------------------*/ /** - * @brief This function configures the TIM6 as a time base source. - * The time source is configured to have 1ms time base with a dedicated - * Tick interrupt priority. - * @note This function is called automatically at the beginning of program after - * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). - * @param TickPriority: Tick interrupt priority. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority) -{ - RCC_ClkInitTypeDef clkconfig; - uint32_t uwTimclock, uwAPB1Prescaler = 0U; - uint32_t uwPrescalerValue = 0U; - uint32_t pFLatency; - - /*Configure the TIM6 IRQ priority */ - HAL_NVIC_SetPriority(TIM6_DAC_IRQn, TickPriority ,0U); - + * @brief This function configures the TIM6 as a time base source. + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program + * after reset by HAL_Init() or at any time when clock is configured, by + * HAL_RCC_ClockConfig(). + * @param TickPriority: Tick interrupt priority. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { + RCC_ClkInitTypeDef clkconfig; + uint32_t uwTimclock, uwAPB1Prescaler = 0U; + uint32_t uwPrescalerValue = 0U; + uint32_t pFLatency; + + /*Configure the TIM6 IRQ priority */ + HAL_NVIC_SetPriority(TIM6_DAC_IRQn, TickPriority, 0U); + /* Enable the TIM6 global Interrupt */ HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); - + /* Enable TIM6 clock */ __HAL_RCC_TIM6_CLK_ENABLE(); - + /* Get clock configuration */ HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - + /* Get APB1 prescaler */ uwAPB1Prescaler = clkconfig.APB1CLKDivider; - + /* Compute TIM6 clock */ - if (uwAPB1Prescaler == RCC_HCLK_DIV1) - { + if (uwAPB1Prescaler == RCC_HCLK_DIV1) { uwTimclock = HAL_RCC_GetPCLK1Freq(); + } else { + uwTimclock = 2 * HAL_RCC_GetPCLK1Freq(); } - else - { - uwTimclock = 2*HAL_RCC_GetPCLK1Freq(); - } - + /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ - uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - + uwPrescalerValue = (uint32_t)((uwTimclock / 1000000U) - 1U); + /* Initialize TIM6 */ TimHandle.Instance = TIM6; - + /* Initialize TIMx peripheral as follow: + Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base. + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. @@ -108,61 +108,52 @@ HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority) TimHandle.Init.Prescaler = uwPrescalerValue; TimHandle.Init.ClockDivision = 0; TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP; - if(HAL_TIM_Base_Init(&TimHandle) == HAL_OK) - { + if (HAL_TIM_Base_Init(&TimHandle) == HAL_OK) { /* Start the TIM time Base generation in interrupt mode */ return HAL_TIM_Base_Start_IT(&TimHandle); } - + /* Return function status */ return HAL_ERROR; } /** - * @brief Suspend Tick increment. - * @note Disable the tick increment by disabling TIM6 update interrupt. - * @param None - * @retval None - */ -void HAL_SuspendTick(void) -{ + * @brief Suspend Tick increment. + * @note Disable the tick increment by disabling TIM6 update interrupt. + * @param None + * @retval None + */ +void HAL_SuspendTick(void) { /* Disable TIM6 update Interrupt */ __HAL_TIM_DISABLE_IT(&TimHandle, TIM_IT_UPDATE); } /** - * @brief Resume Tick increment. - * @note Enable the tick increment by Enabling TIM6 update interrupt. - * @param None - * @retval None - */ -void HAL_ResumeTick(void) -{ + * @brief Resume Tick increment. + * @note Enable the tick increment by Enabling TIM6 update interrupt. + * @param None + * @retval None + */ +void HAL_ResumeTick(void) { /* Enable TIM6 Update interrupt */ __HAL_TIM_ENABLE_IT(&TimHandle, TIM_IT_UPDATE); } /** - * @brief Period elapsed callback in non blocking mode - * @note This function is called when TIM6 interrupt took place, inside - * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment - * a global variable "uwTick" used as application time base. - * @param htim : TIM handle - * @retval None - */ -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - HAL_IncTick(); -} + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { HAL_IncTick(); } /** - * @brief This function handles TIM interrupt request. - * @param None - * @retval None - */ -void TIM6_DAC_IRQHandler(void) -{ - HAL_TIM_IRQHandler(&TimHandle); -} + * @brief This function handles TIM interrupt request. + * @param None + * @retval None + */ +void TIM6_DAC_IRQHandler(void) { HAL_TIM_IRQHandler(&TimHandle); } /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_it.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_it.c index d6a4ca9..0e1cb78 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_it.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_it.c @@ -1,41 +1,42 @@ /** - ****************************************************************************** - * @file LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/stm32h7xx_it.c - * @author MCD Application Team - * @brief Main Interrupt Service Routines. - ****************************************************************************** - * @attention - * - *

© COPYRIGHT(c) 2017 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. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file LwIP/LwIP_HTTP_Server_Netconn_RTOS/Src/stm32h7xx_it.c + * @author MCD Application Team + * @brief Main Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2017 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. + * + ****************************************************************************** + */ /* Includes ------------------------------------------------------------------*/ -#include "OBSWConfig.h" #include "stm32h7xx_it.h" +#include "OBSWConfig.h" #include "cmsis_os.h" #include "main.h" @@ -57,86 +58,69 @@ void ETH_IRQHandler(void); /******************************************************************************/ /** - * @brief This function handles NMI exception. - * @param None - * @retval None - */ -void NMI_Handler(void) -{ -} + * @brief This function handles NMI exception. + * @param None + * @retval None + */ +void NMI_Handler(void) {} /** - * @brief This function handles Hard Fault exception. - * @param None - * @retval None - */ -void HardFault_Handler(void) -{ + * @brief This function handles Hard Fault exception. + * @param None + * @retval None + */ +void HardFault_Handler(void) { /* Go to infinite loop when Hard Fault exception occurs */ - while (1) - { + while (1) { } } /** - * @brief This function handles Memory Manage exception. - * @param None - * @retval None - */ -void MemManage_Handler(void) -{ + * @brief This function handles Memory Manage exception. + * @param None + * @retval None + */ +void MemManage_Handler(void) { /* Go to infinite loop when Memory Manage exception occurs */ - while (1) - { + while (1) { } } /** - * @brief This function handles Bus Fault exception. - * @param None - * @retval None - */ -void BusFault_Handler(void) -{ + * @brief This function handles Bus Fault exception. + * @param None + * @retval None + */ +void BusFault_Handler(void) { /* Go to infinite loop when Bus Fault exception occurs */ - while (1) - { + while (1) { } } /** - * @brief This function handles Usage Fault exception. - * @param None - * @retval None - */ -void UsageFault_Handler(void) -{ + * @brief This function handles Usage Fault exception. + * @param None + * @retval None + */ +void UsageFault_Handler(void) { /* Go to infinite loop when Usage Fault exception occurs */ - while (1) - { + while (1) { } } +/** + * @brief This function handles Debug Monitor exception. + * @param None + * @retval None + */ +void DebugMon_Handler(void) {} /** - * @brief This function handles Debug Monitor exception. - * @param None - * @retval None - */ -void DebugMon_Handler(void) -{ -} - -/** - * @brief This function handles SysTick Handler. - * @param None - * @retval None - */ -void SysTick_Handler(void) -{ - osSystickHandler(); -} - + * @brief This function handles SysTick Handler. + * @param None + * @retval None + */ +void SysTick_Handler(void) { osSystickHandler(); } /******************************************************************************/ /* STM32H7xx Peripherals Interrupt Handlers */ @@ -145,24 +129,22 @@ void SysTick_Handler(void) /* file (startup_stm32h7xx.s). */ /******************************************************************************/ /** - * @brief This function handles Ethernet interrupt request. - * @param None - * @retval None - */ -void ETH_IRQHandler(void) -{ + * @brief This function handles Ethernet interrupt request. + * @param None + * @retval None + */ +void ETH_IRQHandler(void) { #if OBSW_ADD_LWIP_COMPONENTS == 1 HAL_ETH_IRQHandler(&EthHandle); #endif } +/** + * @} + */ /** - * @} - */ - -/** - * @} - */ + * @} + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_nucleo.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_nucleo.c index c872fec..3d73f9a 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_nucleo.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/stm32h7xx_nucleo.c @@ -1,160 +1,149 @@ /** - ****************************************************************************** - * @file stm32h7xx_nucleo.c - * @author MCD Application Team - * @brief This file provides set of firmware functions to manage: - * - LEDs and push-button available on STM32H7xx-Nucleo Kit - * from STMicroelectronics - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2018 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 - * - ****************************************************************************** - */ + ****************************************************************************** + * @file stm32h7xx_nucleo.c + * @author MCD Application Team + * @brief This file provides set of firmware functions to manage: + * - LEDs and push-button available on STM32H7xx-Nucleo Kit + * from STMicroelectronics + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 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 "stm32h7xx_nucleo.h" /** @addtogroup BSP - * @{ - */ + * @{ + */ /** @addtogroup STM32H7XX_NUCLEO - * @{ - */ + * @{ + */ /** @addtogroup STM32H7XX_NUCLEO_LOW_LEVEL - * @brief This file provides set of firmware functions to manage Leds and push-button - * available on STM32H7xx-Nucleo Kit from STMicroelectronics. - * @{ - */ + * @brief This file provides set of firmware functions to manage Leds and + * push-button available on STM32H7xx-Nucleo Kit from STMicroelectronics. + * @{ + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Defines LOW LEVEL Private Defines - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Defines LOW LEVEL Private + * Defines + * @{ + */ /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_TypesDefinitions LOW LEVEL Private Typedef - * @{ - */ -typedef void (* BSP_EXTI_LineCallback) (void); +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_TypesDefinitions LOW LEVEL + * Private Typedef + * @{ + */ +typedef void (*BSP_EXTI_LineCallback)(void); /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Variables LOW LEVEL Exported Variables - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Variables LOW LEVEL Exported + * Variables + * @{ + */ EXTI_HandleTypeDef hpb_exti[BUTTONn]; #if (USE_BSP_COM_FEATURE > 0) UART_HandleTypeDef hcom_uart[COMn]; -USART_TypeDef* COM_USART[COMn] = {COM1_UART}; +USART_TypeDef *COM_USART[COMn] = {COM1_UART}; #endif /** - * @} - */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Variables LOW LEVEL Private Variables - * @{ - */ -static GPIO_TypeDef* LED_PORT[LEDn] = {LED1_GPIO_PORT, - LED2_GPIO_PORT, + * @} + */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Variables LOW LEVEL Private + * Variables + * @{ + */ +static GPIO_TypeDef *LED_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT, LED3_GPIO_PORT}; -static const uint16_t LED_PIN[LEDn] = {LED1_PIN, - LED2_PIN, - LED3_PIN}; +static const uint16_t LED_PIN[LEDn] = {LED1_PIN, LED2_PIN, LED3_PIN}; -static GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {BUTTON_USER_GPIO_PORT}; +static GPIO_TypeDef *BUTTON_PORT[BUTTONn] = {BUTTON_USER_GPIO_PORT}; static const uint16_t BUTTON_PIN[BUTTONn] = {BUTTON_USER_PIN}; static const IRQn_Type BUTTON_IRQn[BUTTONn] = {BUTTON_USER_EXTI_IRQn}; - - #if (USE_BSP_COM_FEATURE > 0) - #if (USE_COM_LOG > 0) - static COM_TypeDef COM_ActiveLogPort = COM1; - #endif - #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) - static uint32_t IsComMspCbValid[COMn] = {0}; - #endif +#if (USE_COM_LOG > 0) +static COM_TypeDef COM_ActiveLogPort = COM1; +#endif +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +static uint32_t IsComMspCbValid[COMn] = {0}; +#endif #endif /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_FunctionPrototypes LOW LEVEL Private functions Prototypes - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_FunctionPrototypes LOW LEVEL + * Private functions Prototypes + * @{ + */ static void BUTTON_USER_EXTI_Callback(void); #if (USE_BSP_COM_FEATURE > 0) static void COM1_MspInit(UART_HandleTypeDef *huart); static void COM1_MspDeInit(UART_HandleTypeDef *huart); #endif /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Functions LOW LEVEL Exported Functions - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Exported_Functions LOW LEVEL Exported + * Functions + * @{ + */ /** - * @brief This method returns the STM32H7XX NUCLEO BSP Driver revision - * @retval version: 0xXYZR (8bits for each decimal, R for RC) - */ -int32_t BSP_GetVersion(void) -{ - return (int32_t)STM32H7XX_NUCLEO_BSP_VERSION; -} + * @brief This method returns the STM32H7XX NUCLEO BSP Driver revision + * @retval version: 0xXYZR (8bits for each decimal, R for RC) + */ +int32_t BSP_GetVersion(void) { return (int32_t)STM32H7XX_NUCLEO_BSP_VERSION; } /** - * @brief Configures LED GPIO. - * @param Led Specifies the Led to be configured. - * This parameter can be one of following parameters: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @retval BSP status - */ -int32_t BSP_LED_Init(Led_TypeDef Led) -{ + * @brief Configures LED GPIO. + * @param Led Specifies the Led to be configured. + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Init(Led_TypeDef Led) { int32_t ret = BSP_ERROR_NONE; - GPIO_InitTypeDef gpio_init_structure; + GPIO_InitTypeDef gpio_init_structure; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { /* Enable the GPIO LED Clock */ - if(Led == LED1) - { + if (Led == LED1) { LED1_GPIO_CLK_ENABLE(); - } - else if(Led == LED2) - { + } else if (Led == LED2) { LED2_GPIO_CLK_ENABLE(); - } - else - { + } else { LED3_GPIO_CLK_ENABLE(); } /* Configure the GPIO_LED pin */ - gpio_init_structure.Pin = LED_PIN[Led]; - gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; - gpio_init_structure.Pull = GPIO_NOPULL; + gpio_init_structure.Pin = LED_PIN[Led]; + gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP; + gpio_init_structure.Pull = GPIO_NOPULL; gpio_init_structure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(LED_PORT[Led], &gpio_init_structure); @@ -165,26 +154,22 @@ int32_t BSP_LED_Init(Led_TypeDef Led) } /** - * @brief DeInit LEDs. - * @param Led LED to be de-init. - * This parameter can be one of the following values: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @note Led DeInit does not disable the GPIO clock nor disable the Mfx - * @retval BSP status - */ -int32_t BSP_LED_DeInit(Led_TypeDef Led) -{ + * @brief DeInit LEDs. + * @param Led LED to be de-init. + * This parameter can be one of the following values: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @note Led DeInit does not disable the GPIO clock nor disable the Mfx + * @retval BSP status + */ +int32_t BSP_LED_DeInit(Led_TypeDef Led) { int32_t ret = BSP_ERROR_NONE; - GPIO_InitTypeDef gpio_init_structure; + GPIO_InitTypeDef gpio_init_structure; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { /* Turn off LED */ HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET); /* DeInit the GPIO_LED pin */ @@ -196,24 +181,20 @@ int32_t BSP_LED_DeInit(Led_TypeDef Led) } /** - * @brief Turns selected LED On. - * @param Led Specifies the Led to be set on. - * This parameter can be one of following parameters: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @retval BSP status - */ -int32_t BSP_LED_On(Led_TypeDef Led) -{ + * @brief Turns selected LED On. + * @param Led Specifies the Led to be set on. + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_On(Led_TypeDef Led) { int32_t ret = BSP_ERROR_NONE; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_SET); } @@ -221,24 +202,20 @@ int32_t BSP_LED_On(Led_TypeDef Led) } /** - * @brief Turns selected LED Off. - * @param Led: Specifies the Led to be set off. - * This parameter can be one of following parameters: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @retval BSP status - */ -int32_t BSP_LED_Off(Led_TypeDef Led) -{ + * @brief Turns selected LED Off. + * @param Led: Specifies the Led to be set off. + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Off(Led_TypeDef Led) { int32_t ret = BSP_ERROR_NONE; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_RESET); } @@ -246,24 +223,20 @@ int32_t BSP_LED_Off(Led_TypeDef Led) } /** - * @brief Toggles the selected LED. - * @param Led Specifies the Led to be toggled. - * This parameter can be one of following parameters: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @retval BSP status - */ -int32_t BSP_LED_Toggle(Led_TypeDef Led) -{ + * @brief Toggles the selected LED. + * @param Led Specifies the Led to be toggled. + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval BSP status + */ +int32_t BSP_LED_Toggle(Led_TypeDef Led) { int32_t ret = BSP_ERROR_NONE; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { HAL_GPIO_TogglePin(LED_PORT[Led], LED_PIN[Led]); } @@ -271,62 +244,56 @@ int32_t BSP_LED_Toggle(Led_TypeDef Led) } /** - * @brief Get the state of the selected LED. - * @param Led LED to get its state - * This parameter can be one of following parameters: - * @arg LED1 - * @arg LED2 - * @arg LED3 - * @retval LED status - */ -int32_t BSP_LED_GetState (Led_TypeDef Led) -{ + * @brief Get the state of the selected LED. + * @param Led LED to get its state + * This parameter can be one of following parameters: + * @arg LED1 + * @arg LED2 + * @arg LED3 + * @retval LED status + */ +int32_t BSP_LED_GetState(Led_TypeDef Led) { int32_t ret; - if((Led != LED1) && (Led != LED2) && (Led != LED3)) - { + if ((Led != LED1) && (Led != LED2) && (Led != LED3)) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { - ret = (int32_t)HAL_GPIO_ReadPin (LED_PORT [Led], LED_PIN [Led]); + } else { + ret = (int32_t)HAL_GPIO_ReadPin(LED_PORT[Led], LED_PIN[Led]); } return ret; } /** - * @brief Configures button GPIO and EXTI Line. - * @param Button Button to be configured - * This parameter can be one of the following values: - * @arg BUTTON_USER: Wakeup Push Button - * @param ButtonMode Button mode - * This parameter can be one of the following values: - * @arg BUTTON_MODE_GPIO: Button will be used as simple IO - * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line - * with interrupt generation capability - */ -int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) -{ + * @brief Configures button GPIO and EXTI Line. + * @param Button Button to be configured + * This parameter can be one of the following values: + * @arg BUTTON_USER: Wakeup Push Button + * @param ButtonMode Button mode + * This parameter can be one of the following values: + * @arg BUTTON_MODE_GPIO: Button will be used as simple IO + * @arg BUTTON_MODE_EXTI: Button will be connected to EXTI line + * with interrupt generation capability + */ +int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) { GPIO_InitTypeDef gpio_init_structure; - static BSP_EXTI_LineCallback ButtonCallback[BUTTONn] = {BUTTON_USER_EXTI_Callback}; - static uint32_t BSP_BUTTON_PRIO [BUTTONn] = {BSP_BUTTON_USER_IT_PRIORITY}; + static BSP_EXTI_LineCallback ButtonCallback[BUTTONn] = { + BUTTON_USER_EXTI_Callback}; + static uint32_t BSP_BUTTON_PRIO[BUTTONn] = {BSP_BUTTON_USER_IT_PRIORITY}; static const uint32_t BUTTON_EXTI_LINE[BUTTONn] = {BUTTON_USER_EXTI_LINE}; /* Enable the BUTTON clock */ BUTTON_USER_GPIO_CLK_ENABLE(); - gpio_init_structure.Pin = BUTTON_PIN [Button]; + gpio_init_structure.Pin = BUTTON_PIN[Button]; gpio_init_structure.Pull = GPIO_PULLDOWN; gpio_init_structure.Speed = GPIO_SPEED_FREQ_HIGH; - if(ButtonMode == BUTTON_MODE_GPIO) - { + if (ButtonMode == BUTTON_MODE_GPIO) { /* Configure Button pin as input */ gpio_init_structure.Mode = GPIO_MODE_INPUT; - HAL_GPIO_Init(BUTTON_PORT [Button], &gpio_init_structure); - } - else /* (ButtonMode == BUTTON_MODE_EXTI) */ + HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); + } else /* (ButtonMode == BUTTON_MODE_EXTI) */ { /* Configure Button pin as input with External interrupt */ gpio_init_structure.Mode = GPIO_MODE_IT_RISING; @@ -334,7 +301,8 @@ int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) HAL_GPIO_Init(BUTTON_PORT[Button], &gpio_init_structure); (void)HAL_EXTI_GetHandle(&hpb_exti[Button], BUTTON_EXTI_LINE[Button]); - (void)HAL_EXTI_RegisterCallback(&hpb_exti[Button], HAL_EXTI_COMMON_CB_ID, ButtonCallback[Button]); + (void)HAL_EXTI_RegisterCallback(&hpb_exti[Button], HAL_EXTI_COMMON_CB_ID, + ButtonCallback[Button]); /* Enable and set Button EXTI Interrupt to the lowest priority */ HAL_NVIC_SetPriority((BUTTON_IRQn[Button]), BSP_BUTTON_PRIO[Button], 0x00); @@ -345,14 +313,13 @@ int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode) } /** - * @brief Push Button DeInit. - * @param Button Button to be configured - * This parameter can be one of the following values: - * @arg BUTTON_USER: Wakeup Push Button - * @note PB DeInit does not disable the GPIO clock - */ -int32_t BSP_PB_DeInit(Button_TypeDef Button) -{ + * @brief Push Button DeInit. + * @param Button Button to be configured + * This parameter can be one of the following values: + * @arg BUTTON_USER: Wakeup Push Button + * @note PB DeInit does not disable the GPIO clock + */ +int32_t BSP_PB_DeInit(Button_TypeDef Button) { GPIO_InitTypeDef gpio_init_structure; gpio_init_structure.Pin = BUTTON_PIN[Button]; @@ -363,34 +330,31 @@ int32_t BSP_PB_DeInit(Button_TypeDef Button) } /** - * @brief Returns the selected button state. - * @param Button Button to be checked - * This parameter can be one of the following values: - * @arg BUTTON_USER: Wakeup Push Button - * @retval The Button GPIO pin value (GPIO_PIN_RESET = button pressed) - */ -int32_t BSP_PB_GetState(Button_TypeDef Button) -{ + * @brief Returns the selected button state. + * @param Button Button to be checked + * This parameter can be one of the following values: + * @arg BUTTON_USER: Wakeup Push Button + * @retval The Button GPIO pin value (GPIO_PIN_RESET = button pressed) + */ +int32_t BSP_PB_GetState(Button_TypeDef Button) { return (int32_t)HAL_GPIO_ReadPin(BUTTON_PORT[Button], BUTTON_PIN[Button]); } /** - * @brief BSP Button IRQ handler - * @param Button Can only be BUTTON_USER - * @retval None - */ -void BSP_PB_IRQHandler(Button_TypeDef Button) -{ + * @brief BSP Button IRQ handler + * @param Button Can only be BUTTON_USER + * @retval None + */ +void BSP_PB_IRQHandler(Button_TypeDef Button) { HAL_EXTI_IRQHandler(&hpb_exti[Button]); } /** - * @brief BSP Push Button callback - * @param Button Specifies the pin connected EXTI line - * @retval None - */ -__weak void BSP_PB_Callback(Button_TypeDef Button) -{ + * @brief BSP Push Button callback + * @param Button Specifies the pin connected EXTI line + * @retval None + */ +__weak void BSP_PB_Callback(Button_TypeDef Button) { /* Prevent unused argument(s) compilation warning */ UNUSED(Button); @@ -400,38 +364,32 @@ __weak void BSP_PB_Callback(Button_TypeDef Button) #if (USE_BSP_COM_FEATURE > 0) /** - * @brief Configures COM port. - * @param COM COM port to be configured. - * This parameter can be COM1 - * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the - * configuration information for the specified USART peripheral. - * @retval BSP error code - */ -int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init) -{ + * @brief Configures COM port. + * @param COM COM port to be configured. + * This parameter can be COM1 + * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART + * peripheral. + * @retval BSP error code + */ +int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init) { int32_t ret = BSP_ERROR_NONE; - if(COM >= COMn) - { + if (COM >= COMn) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { #if (USE_HAL_UART_REGISTER_CALLBACKS == 0) /* Init the UART Msp */ COM1_MspInit(&hcom_uart[COM]); #else - if(IsComMspCbValid[COM] == 0U) - { - if(BSP_COM_RegisterDefaultMspCallbacks(COM) != BSP_ERROR_NONE) - { + if (IsComMspCbValid[COM] == 0U) { + if (BSP_COM_RegisterDefaultMspCallbacks(COM) != BSP_ERROR_NONE) { return BSP_ERROR_MSP_FAILURE; } } #endif - if(MX_USART3_Init(&hcom_uart[COM], COM_Init) != HAL_OK) - { + if (MX_USART3_Init(&hcom_uart[COM], COM_Init) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; } } @@ -440,21 +398,17 @@ int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init) } /** - * @brief DeInit COM port. - * @param COM COM port to be configured. - * This parameter can be COM1 - * @retval BSP status - */ -int32_t BSP_COM_DeInit(COM_TypeDef COM) -{ + * @brief DeInit COM port. + * @param COM COM port to be configured. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_DeInit(COM_TypeDef COM) { int32_t ret = BSP_ERROR_NONE; - if(COM >= COMn) - { + if (COM >= COMn) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { /* USART configuration */ hcom_uart[COM].Instance = COM_USART[COM]; @@ -462,8 +416,7 @@ int32_t BSP_COM_DeInit(COM_TypeDef COM) COM1_MspDeInit(&hcom_uart[COM]); #endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 0) */ - if(HAL_UART_DeInit(&hcom_uart[COM]) != HAL_OK) - { + if (HAL_UART_DeInit(&hcom_uart[COM]) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; } } @@ -472,57 +425,52 @@ int32_t BSP_COM_DeInit(COM_TypeDef COM) } /** - * @brief Configures COM port. - * @param huart USART handle - * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the - * configuration information for the specified USART peripheral. - * @retval HAL error code - */ -__weak HAL_StatusTypeDef MX_USART3_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init) -{ + * @brief Configures COM port. + * @param huart USART handle + * @param COM_Init Pointer to a UART_HandleTypeDef structure that contains the + * configuration information for the specified USART + * peripheral. + * @retval HAL error code + */ +__weak HAL_StatusTypeDef MX_USART3_Init(UART_HandleTypeDef *huart, + MX_UART_InitTypeDef *COM_Init) { /* USART configuration */ - huart->Instance = COM_USART[COM1]; - huart->Init.BaudRate = COM_Init->BaudRate; - huart->Init.Mode = UART_MODE_TX_RX; - huart->Init.Parity = (uint32_t)COM_Init->Parity; - huart->Init.WordLength = (uint32_t)COM_Init->WordLength; - huart->Init.StopBits = (uint32_t)COM_Init->StopBits; - huart->Init.HwFlowCtl = (uint32_t)COM_Init->HwFlowCtl; - huart->Init.OverSampling = UART_OVERSAMPLING_8; + huart->Instance = COM_USART[COM1]; + huart->Init.BaudRate = COM_Init->BaudRate; + huart->Init.Mode = UART_MODE_TX_RX; + huart->Init.Parity = (uint32_t)COM_Init->Parity; + huart->Init.WordLength = (uint32_t)COM_Init->WordLength; + huart->Init.StopBits = (uint32_t)COM_Init->StopBits; + huart->Init.HwFlowCtl = (uint32_t)COM_Init->HwFlowCtl; + huart->Init.OverSampling = UART_OVERSAMPLING_8; - return HAL_UART_Init(huart); + return HAL_UART_Init(huart); } #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /** - * @brief Register Default COM Msp Callbacks - * @param COM COM port to be configured. - * This parameter can be COM1 - * @retval BSP status - */ -int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM) -{ + * @brief Register Default COM Msp Callbacks + * @param COM COM port to be configured. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM) { int32_t ret = BSP_ERROR_NONE; - if(COM >= COMn) - { + if (COM >= COMn) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { __HAL_UART_RESET_HANDLE_STATE(&hcom_uart[COM]); /* Register default MspInit/MspDeInit Callback */ - if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, COM1_MspInit) != HAL_OK) - { + if (HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, + COM1_MspInit) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; - } - else if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPDEINIT_CB_ID, COM1_MspDeInit) != HAL_OK) - { + } else if (HAL_UART_RegisterCallback(&hcom_uart[COM], + HAL_UART_MSPDEINIT_CB_ID, + COM1_MspDeInit) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; - } - else - { + } else { IsComMspCbValid[COM] = 1U; } } @@ -532,35 +480,29 @@ int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM) } /** - * @brief Register COM Msp Callback registering - * @param COM COM port to be configured. - * This parameter can be COM1 - * @param Callbacks pointer to COM1 MspInit/MspDeInit callback functions - * @retval BSP status - */ -int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback) -{ + * @brief Register COM Msp Callback registering + * @param COM COM port to be configured. + * This parameter can be COM1 + * @param Callbacks pointer to COM1 MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM, BSP_COM_Cb_t *Callback) { int32_t ret = BSP_ERROR_NONE; - if(COM >= COMn) - { + if (COM >= COMn) { ret = BSP_ERROR_WRONG_PARAM; - } - else - { + } else { __HAL_UART_RESET_HANDLE_STATE(&hcom_uart[COM]); /* Register MspInit/MspDeInit Callbacks */ - if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, Callback->pMspInitCb) != HAL_OK) - { + if (HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPINIT_CB_ID, + Callback->pMspInitCb) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; - } - else if(HAL_UART_RegisterCallback(&hcom_uart[COM], HAL_UART_MSPDEINIT_CB_ID, Callback->pMspDeInitCb) != HAL_OK) - { + } else if (HAL_UART_RegisterCallback(&hcom_uart[COM], + HAL_UART_MSPDEINIT_CB_ID, + Callback->pMspDeInitCb) != HAL_OK) { ret = BSP_ERROR_PERIPH_FAILURE; - } - else - { + } else { IsComMspCbValid[COM] = 1U; } } @@ -571,59 +513,55 @@ int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback) #if (USE_COM_LOG > 0) /** - * @brief Select the active COM port. - * @param COM COM port to be activated. - * This parameter can be COM1 - * @retval BSP status - */ -int32_t BSP_COM_SelectLogPort(COM_TypeDef COM) -{ - if(COM_ActiveLogPort != COM) - { + * @brief Select the active COM port. + * @param COM COM port to be activated. + * This parameter can be COM1 + * @retval BSP status + */ +int32_t BSP_COM_SelectLogPort(COM_TypeDef COM) { + if (COM_ActiveLogPort != COM) { COM_ActiveLogPort = COM; } return BSP_ERROR_NONE; } /** - * @brief Redirect console output to COM - */ - #ifdef __GNUC__ - int __io_putchar (int ch) - #else - int fputc (int ch, FILE *f) - #endif /* __GNUC__ */ + * @brief Redirect console output to COM + */ +#ifdef __GNUC__ +int __io_putchar(int ch) +#else +int fputc(int ch, FILE *f) +#endif /* __GNUC__ */ { - HAL_UART_Transmit (&hcom_uart [COM_ActiveLogPort], (uint8_t *) &ch, 1, COM_POLL_TIMEOUT); + HAL_UART_Transmit(&hcom_uart[COM_ActiveLogPort], (uint8_t *)&ch, 1, + COM_POLL_TIMEOUT); return ch; } #endif /* USE_COM_LOG */ #endif /* USE_BSP_COM_FEATURE */ /** - * @} - */ + * @} + */ -/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Functions LOW LEVEL Private functions - * @{ - */ +/** @defgroup STM32H7XX_NUCLEO_LOW_LEVEL_Private_Functions LOW LEVEL Private + * functions + * @{ + */ /** - * @brief Key EXTI line detection callbacks. - * @retval BSP status - */ -static void BUTTON_USER_EXTI_Callback(void) -{ - BSP_PB_Callback(BUTTON_USER); -} + * @brief Key EXTI line detection callbacks. + * @retval BSP status + */ +static void BUTTON_USER_EXTI_Callback(void) { BSP_PB_Callback(BUTTON_USER); } #if (USE_BSP_COM_FEATURE > 0) /** - * @brief Initializes UART MSP. - * @param huart UART handle - * @retval BSP status - */ -static void COM1_MspInit(UART_HandleTypeDef *huart) -{ + * @brief Initializes UART MSP. + * @param huart UART handle + * @retval BSP status + */ +static void COM1_MspInit(UART_HandleTypeDef *huart) { GPIO_InitTypeDef gpio_init_structure; /* Prevent unused argument(s) compilation warning */ @@ -652,22 +590,21 @@ static void COM1_MspInit(UART_HandleTypeDef *huart) } /** - * @brief Initialize USART3 Msp part - * @param huart UART handle - * @retval BSP status - */ -static void COM1_MspDeInit(UART_HandleTypeDef *huart) -{ - GPIO_InitTypeDef gpio_init_structure; + * @brief Initialize USART3 Msp part + * @param huart UART handle + * @retval BSP status + */ +static void COM1_MspDeInit(UART_HandleTypeDef *huart) { + GPIO_InitTypeDef gpio_init_structure; /* Prevent unused argument(s) compilation warning */ UNUSED(huart); /* COM GPIO pin configuration */ - gpio_init_structure.Pin = COM1_TX_PIN; + gpio_init_structure.Pin = COM1_TX_PIN; HAL_GPIO_DeInit(COM1_TX_GPIO_PORT, gpio_init_structure.Pin); - gpio_init_structure.Pin = COM1_RX_PIN; + gpio_init_structure.Pin = COM1_RX_PIN; HAL_GPIO_DeInit(COM1_RX_GPIO_PORT, gpio_init_structure.Pin); /* Disable USART clock */ @@ -675,19 +612,19 @@ static void COM1_MspDeInit(UART_HandleTypeDef *huart) } #endif /* USE_BSP_COM_FEATURE */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/syscalls.c b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/syscalls.c index 3992c65..1db1ff1 100644 --- a/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/syscalls.c +++ b/bsp_stm32h7_freertos/NUCLEO-H743ZI/Src/syscalls.c @@ -4,27 +4,26 @@ * the debug port. */ -#include -#include -#include -#include #include +#include +#include +#include +#include #include #include #include -#include +#include -#include #include +#include - -#define AUTO_RETURN_AFTER_NEWLINE 1 +#define AUTO_RETURN_AFTER_NEWLINE 1 // _write currently adds \n after \r automatically. // If the At91lib\utility\stdio.c printf implementation is not used anymore: // remove if there are spurious newlines! -//int _read(int file, void *ptr, size_t len) { +// int _read(int file, void *ptr, size_t len) { // (void)len; // if(file <= STDERR_FILENO) { // *(char *) ptr = DBGU_GetChar(); @@ -43,112 +42,105 @@ // return -1; // } // -//} +// } int _write(int file, const void *ptr, size_t len) { - size_t i; + size_t i; - if(file <= STDERR_FILENO) { - for(i=0; i dummyData = {0x01, 0x02, 0x03}; - ReturnValue_t result = spiComIF.sendMessage(&spiCookie, dummyData.data(), dummyData.size()); - if(result != HasReturnvaluesIF::RETURN_OK) { - return result; - } - std::array recBuf; - uint8_t* recPtr = recBuf.data(); - size_t readLen = 0; - return spiComIF.readReceivedMessage(&spiCookie, &recPtr, &readLen); + std::array dummyData = {0x01, 0x02, 0x03}; + ReturnValue_t result = + spiComIF.sendMessage(&spiCookie, dummyData.data(), dummyData.size()); + if (result != HasReturnvaluesIF::RETURN_OK) { + return result; + } + std::array recBuf; + uint8_t *recPtr = recBuf.data(); + size_t readLen = 0; + return spiComIF.readReceivedMessage(&spiCookie, &recPtr, &readLen); } diff --git a/bsp_stm32h7_freertos/boardtest/SpiTest.h b/bsp_stm32h7_freertos/boardtest/SpiTest.h index 1a3676d..90fe44f 100644 --- a/bsp_stm32h7_freertos/boardtest/SpiTest.h +++ b/bsp_stm32h7_freertos/boardtest/SpiTest.h @@ -7,14 +7,15 @@ class SpiTest { public: - SpiTest(SpiComIF& spiComIF); + SpiTest(SpiComIF &spiComIF); + + ReturnValue_t performOperation(uint8_t opCode = 0); - ReturnValue_t performOperation(uint8_t opCode = 0); private: - static constexpr address_t TEST_ADDRESS = 0x00; - spi::MspPollingConfigStruct mspCfg; - SpiComIF& spiComIF; - SpiCookie spiCookie; + static constexpr address_t TEST_ADDRESS = 0x00; + spi::MspPollingConfigStruct mspCfg; + SpiComIF &spiComIF; + SpiCookie spiCookie; }; #endif /* BSP_STM32H7_FREERTOS_BOARDTEST_SPITEST_H_ */ diff --git a/bsp_stm32h7_freertos/core/CMakeLists.txt b/bsp_stm32h7_freertos/core/CMakeLists.txt index 8e97482..5edc79a 100644 --- a/bsp_stm32h7_freertos/core/CMakeLists.txt +++ b/bsp_stm32h7_freertos/core/CMakeLists.txt @@ -1,5 +1 @@ -target_sources(${TARGET_NAME} PRIVATE - InitMission.cpp - ObjectFactory.cpp -) - +target_sources(${TARGET_NAME} PRIVATE InitMission.cpp ObjectFactory.cpp) diff --git a/bsp_stm32h7_freertos/core/InitMission.cpp b/bsp_stm32h7_freertos/core/InitMission.cpp index 6d0fc16..80b47ac 100644 --- a/bsp_stm32h7_freertos/core/InitMission.cpp +++ b/bsp_stm32h7_freertos/core/InitMission.cpp @@ -6,232 +6,246 @@ #include "example/utility/TaskCreation.h" #include "fsfw_tests/integration/assemblies/TestAssembly.h" +#include "fsfw/devicehandlers/DeviceHandlerIF.h" +#include "fsfw/modes/HasModesIF.h" +#include "fsfw/modes/ModeMessage.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h" #include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/tasks/FixedTimeslotTaskIF.h" #include "fsfw/tasks/PeriodicTaskIF.h" #include "fsfw/tasks/TaskFactory.h" -#include "fsfw/devicehandlers/DeviceHandlerIF.h" -#include "fsfw/modes/HasModesIF.h" -#include "fsfw/modes/ModeMessage.h" #include "FreeRTOS.h" void InitMission::createTasks() { - TaskFactory* taskFactory = TaskFactory::instance(); + TaskFactory *taskFactory = TaskFactory::instance(); #if OBSW_ADD_CORE_COMPONENTS == 1 - /* TMTC Distribution */ - PeriodicTaskIF* distributerTask = taskFactory->createPeriodicTask( - "DIST", 5, 1024 * 2, 0.2, nullptr); - ReturnValue_t result = distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR); - if(result!=HasReturnvaluesIF::RETURN_OK) { - task::printInitError("CCSDS distributor", objects::CCSDS_DISTRIBUTOR); - } - result = distributerTask->addComponent(objects::PUS_DISTRIBUTOR); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS distributor", objects::PUS_DISTRIBUTOR); - } - result = distributerTask->addComponent(objects::TM_FUNNEL); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("TM funnel", objects::TM_FUNNEL); - } + /* TMTC Distribution */ + PeriodicTaskIF *distributerTask = + taskFactory->createPeriodicTask("DIST", 5, 1024 * 2, 0.2, nullptr); + ReturnValue_t result = + distributerTask->addComponent(objects::CCSDS_DISTRIBUTOR); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("CCSDS distributor", objects::CCSDS_DISTRIBUTOR); + } + result = distributerTask->addComponent(objects::PUS_DISTRIBUTOR); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS distributor", objects::PUS_DISTRIBUTOR); + } + result = distributerTask->addComponent(objects::TM_FUNNEL); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("TM funnel", objects::TM_FUNNEL); + } - /* UDP bridge */ - PeriodicTaskIF* udpBridgeTask = TaskFactory::instance()->createPeriodicTask( - "UDP_UNIX_BRIDGE", 6, 1024 * 2, 0.2, nullptr); - result = udpBridgeTask->addComponent(objects::UDP_BRIDGE); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("UDP bridge", objects::UDP_BRIDGE); - } - PeriodicTaskIF* udpPollingTask = TaskFactory::instance()-> - createPeriodicTask("UDP_POLLING", 8, 1024, 0.1, nullptr); - result = udpPollingTask->addComponent(objects::UDP_POLLING_TASK); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("UDP polling task", objects::UDP_POLLING_TASK); - } + /* UDP bridge */ + PeriodicTaskIF *udpBridgeTask = TaskFactory::instance()->createPeriodicTask( + "UDP_UNIX_BRIDGE", 6, 1024 * 2, 0.2, nullptr); + result = udpBridgeTask->addComponent(objects::UDP_BRIDGE); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("UDP bridge", objects::UDP_BRIDGE); + } + PeriodicTaskIF *udpPollingTask = TaskFactory::instance()->createPeriodicTask( + "UDP_POLLING", 8, 1024, 0.1, nullptr); + result = udpPollingTask->addComponent(objects::UDP_POLLING_TASK); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("UDP polling task", objects::UDP_POLLING_TASK); + } - PeriodicTaskIF* eventManagerTask = TaskFactory::instance()->createPeriodicTask( - "EVENT_MGMT", 4, 1024 * 2, 0.1, nullptr); - result = eventManagerTask->addComponent(objects::EVENT_MANAGER); - if(result!=HasReturnvaluesIF::RETURN_OK) { - task::printInitError("Event Manager", objects::EVENT_MANAGER); - } + PeriodicTaskIF *eventManagerTask = + TaskFactory::instance()->createPeriodicTask("EVENT_MGMT", 4, 1024 * 2, + 0.1, nullptr); + result = eventManagerTask->addComponent(objects::EVENT_MANAGER); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("Event Manager", objects::EVENT_MANAGER); + } #endif /* OBSW_ADD_CORE_COMPONENTS == 1 */ #if OBSW_ADD_PUS_STACK == 1 - /* PUS Services */ - PeriodicTaskIF* pusVerification = TaskFactory::instance()->createPeriodicTask( - "PUS_VERIF_1", 4, 1024 * 2, 0.2, nullptr); - result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION); - if(result != HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 1", objects::PUS_SERVICE_1_VERIFICATION); - } + /* PUS Services */ + PeriodicTaskIF *pusVerification = TaskFactory::instance()->createPeriodicTask( + "PUS_VERIF_1", 4, 1024 * 2, 0.2, nullptr); + result = pusVerification->addComponent(objects::PUS_SERVICE_1_VERIFICATION); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 1", objects::PUS_SERVICE_1_VERIFICATION); + } - PeriodicTaskIF* pusHighPrio = TaskFactory::instance()->createPeriodicTask( - "PUS_HIGH_PRIO", 5, 1024 * 2, 0.2, nullptr); - result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 2", objects::PUS_SERVICE_2_DEVICE_ACCESS); - } - result = pusHighPrio->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); - if(result != HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 5", objects::PUS_SERVICE_5_EVENT_REPORTING); - } - result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 9", objects::PUS_SERVICE_9_TIME_MGMT); - } + PeriodicTaskIF *pusHighPrio = TaskFactory::instance()->createPeriodicTask( + "PUS_HIGH_PRIO", 5, 1024 * 2, 0.2, nullptr); + result = pusHighPrio->addComponent(objects::PUS_SERVICE_2_DEVICE_ACCESS); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 2", objects::PUS_SERVICE_2_DEVICE_ACCESS); + } + result = pusHighPrio->addComponent(objects::PUS_SERVICE_5_EVENT_REPORTING); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 5", objects::PUS_SERVICE_5_EVENT_REPORTING); + } + result = pusHighPrio->addComponent(objects::PUS_SERVICE_9_TIME_MGMT); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 9", objects::PUS_SERVICE_9_TIME_MGMT); + } - PeriodicTaskIF* pusMedPrio = TaskFactory::instance()->createPeriodicTask( - "PUS_HIGH_PRIO", 4, 1024 * 2, 0.8, nullptr); - result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 8", objects::PUS_SERVICE_8_FUNCTION_MGMT); - } - result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 200", objects::PUS_SERVICE_200_MODE_MGMT); - } + PeriodicTaskIF *pusMedPrio = TaskFactory::instance()->createPeriodicTask( + "PUS_HIGH_PRIO", 4, 1024 * 2, 0.8, nullptr); + result = pusMedPrio->addComponent(objects::PUS_SERVICE_8_FUNCTION_MGMT); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 8", objects::PUS_SERVICE_8_FUNCTION_MGMT); + } + result = pusMedPrio->addComponent(objects::PUS_SERVICE_200_MODE_MGMT); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 200", objects::PUS_SERVICE_200_MODE_MGMT); + } - PeriodicTaskIF* pusLowPrio = TaskFactory::instance()->createPeriodicTask( - "PUS_LOW_PRIO", 3, 1024 * 2, 1.6, nullptr); - result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST); - if(result!=HasReturnvaluesIF::RETURN_OK){ - task::printInitError("PUS 17", objects::PUS_SERVICE_17_TEST); - } + PeriodicTaskIF *pusLowPrio = TaskFactory::instance()->createPeriodicTask( + "PUS_LOW_PRIO", 3, 1024 * 2, 1.6, nullptr); + result = pusLowPrio->addComponent(objects::PUS_SERVICE_17_TEST); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("PUS 17", objects::PUS_SERVICE_17_TEST); + } #endif /* OBSW_ADD_PUS_STACK == 1 */ #if OBSW_ADD_TASK_EXAMPLE == 1 - FixedTimeslotTaskIF* timeslotDemoTask = TaskFactory::instance()->createFixedTimeslotTask( - "PST_TASK", 6, 1024 * 2, 0.5, nullptr); - result = pst::pollingSequenceExamples(timeslotDemoTask); - if(result != HasReturnvaluesIF::RETURN_OK) { + FixedTimeslotTaskIF *timeslotDemoTask = + TaskFactory::instance()->createFixedTimeslotTask("PST_TASK", 6, 1024 * 2, + 0.5, nullptr); + result = pst::pollingSequenceExamples(timeslotDemoTask); + if (result != HasReturnvaluesIF::RETURN_OK) { #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "InitMission::createTasks: PST initialization failed!" << std::endl; + sif::error << "InitMission::createTasks: PST initialization failed!" + << std::endl; #else - sif::printError( "InitMission::createTasks: PST initialization failed!\n"); + sif::printError("InitMission::createTasks: PST initialization failed!\n"); #endif - } + } - PeriodicTaskIF* readerTask = TaskFactory::instance()->createPeriodicTask( - "READER_TASK", 3, 1024, 1.0, nullptr); - result = readerTask->addComponent(objects::TEST_DUMMY_4); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("TEST_DUMMY_4", objects::TEST_DUMMY_4); - } + PeriodicTaskIF *readerTask = TaskFactory::instance()->createPeriodicTask( + "READER_TASK", 3, 1024, 1.0, nullptr); + result = readerTask->addComponent(objects::TEST_DUMMY_4); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("TEST_DUMMY_4", objects::TEST_DUMMY_4); + } #endif /* OBSW_ADD_TASK_EXAMPLE == 1 */ #if OBSW_ADD_DEVICE_HANDLER_DEMO == 1 - FixedTimeslotTaskIF* testDevicesTask = TaskFactory::instance()->createFixedTimeslotTask( - "PST_TEST_TASK", 7, 1024 * 2, 1.0, nullptr); - result = pst::pollingSequenceDevices(testDevicesTask); - if(result != HasReturnvaluesIF::RETURN_OK) { + FixedTimeslotTaskIF *testDevicesTask = + TaskFactory::instance()->createFixedTimeslotTask("PST_TEST_TASK", 7, + 1024 * 2, 1.0, nullptr); + result = pst::pollingSequenceDevices(testDevicesTask); + if (result != HasReturnvaluesIF::RETURN_OK) { #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "InitMission::createTasks: Test PST initialization failed!" << std::endl; + sif::error << "InitMission::createTasks: Test PST initialization failed!" + << std::endl; #else - sif::printError("InitMission::createTasks: Test PST initialization faiedl!\n"); + sif::printError( + "InitMission::createTasks: Test PST initialization faiedl!\n"); #endif - } - PeriodicTaskIF* assemblyTask = taskFactory->createPeriodicTask("ASS_TASK", 3, - 1024, 2.0, nullptr); - if(assemblyTask == nullptr){ - task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); - } - result = assemblyTask->addComponent(objects::TEST_ASSEMBLY); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); - } + } + PeriodicTaskIF *assemblyTask = + taskFactory->createPeriodicTask("ASS_TASK", 3, 1024, 2.0, nullptr); + if (assemblyTask == nullptr) { + task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); + } + result = assemblyTask->addComponent(objects::TEST_ASSEMBLY); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("ASS_TASK", objects::TEST_ASSEMBLY); + } #endif /* OBSW_ADD_DEVICE_HANDLER_DEMO == 1 */ - PeriodicTaskIF* testTask = TaskFactory::instance()->createPeriodicTask( - "TEST", 2, 2048, 1.0, nullptr); - result = testTask->addComponent(objects::TEST_TASK); - if(result != HasReturnvaluesIF::RETURN_OK) { - task::printInitError("Test Task", objects::TEST_TASK); - } + PeriodicTaskIF *testTask = TaskFactory::instance()->createPeriodicTask( + "TEST", 2, 2048, 1.0, nullptr); + result = testTask->addComponent(objects::TEST_TASK); + if (result != HasReturnvaluesIF::RETURN_OK) { + task::printInitError("Test Task", objects::TEST_TASK); + } #if OBSW_PERIPHERAL_PST == 1 - FixedTimeslotTaskIF* peripheralPst = TaskFactory::instance()->createFixedTimeslotTask( - "PST_PERIPHERAL_TASK", 9, 1024 * 2, 2.0, nullptr); - result = pst::pstPeripheralsTest(peripheralPst); - if(result != HasReturnvaluesIF::RETURN_OK) { + FixedTimeslotTaskIF *peripheralPst = + TaskFactory::instance()->createFixedTimeslotTask("PST_PERIPHERAL_TASK", 9, + 1024 * 2, 2.0, nullptr); + result = pst::pstPeripheralsTest(peripheralPst); + if (result != HasReturnvaluesIF::RETURN_OK) { #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "InitMission::createTasks: Test PST initialization failed!" << std::endl; + sif::error << "InitMission::createTasks: Test PST initialization failed!" + << std::endl; #else - sif::printError("InitMission::createTasks: Test PST initialization faiedl!\n"); + sif::printError( + "InitMission::createTasks: Test PST initialization faiedl!\n"); #endif - } + } #endif #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Starting tasks.." << std::endl; + sif::info << "Starting tasks.." << std::endl; #else - sif::printInfo("Starting tasks..\n"); + sif::printInfo("Starting tasks..\n"); #endif #if OBSW_ADD_CORE_COMPONENTS == 1 - distributerTask->startTask(); - eventManagerTask->startTask(); - udpBridgeTask->startTask(); - udpPollingTask->startTask(); + distributerTask->startTask(); + eventManagerTask->startTask(); + udpBridgeTask->startTask(); + udpPollingTask->startTask(); #endif /* OBSW_ADD_CORE_COMPONENTS == 1 */ #if OBSW_ADD_PUS_STACK == 1 - pusVerification->startTask(); - pusHighPrio->startTask(); - pusMedPrio->startTask(); - pusLowPrio->startTask(); + pusVerification->startTask(); + pusHighPrio->startTask(); + pusMedPrio->startTask(); + pusLowPrio->startTask(); #endif /* OBSW_ADD_PUS_STACK == 1 */ #if OBSW_ADD_TASK_EXAMPLE == 1 - timeslotDemoTask->startTask(); - readerTask->startTask(); + timeslotDemoTask->startTask(); + readerTask->startTask(); #endif /* OBSW_ADD_TASK_EXAMPLE == 1 */ #if OBSW_ADD_DEVICE_HANDLER_DEMO == 1 - testDevicesTask->startTask(); - assemblyTask->startTask(); + testDevicesTask->startTask(); + assemblyTask->startTask(); #endif /* OBSW_ADD_DEVICE_HANDLER_DEMO == 1 */ #if OBSW_PERIPHERAL_PST == 1 - peripheralPst->startTask(); + peripheralPst->startTask(); #endif /* OBSW_PERIPHERAL_PST == 1 */ - testTask->startTask(); + testTask->startTask(); #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Remaining FreeRTOS heap size: " << std::dec << xPortGetFreeHeapSize() << - " bytes." << std::endl; - sif::info << "Tasks started.." << std::endl; + sif::info << "Remaining FreeRTOS heap size: " << std::dec + << xPortGetFreeHeapSize() << " bytes." << std::endl; + sif::info << "Tasks started.." << std::endl; #else - sif::printInfo("Remaining FreeRTOS heap size: %lu\n", - static_cast(xPortGetFreeHeapSize())); - sif::printInfo("Tasks started..\n"); + sif::printInfo("Remaining FreeRTOS heap size: %lu\n", + static_cast(xPortGetFreeHeapSize())); + sif::printInfo("Tasks started..\n"); #endif #if OBSW_ADD_DEVICE_HANDLER_DEMO - HasModesIF* assembly = ObjectManager::instance()->get(objects::TEST_ASSEMBLY); - if (assembly == nullptr){ - return; - } + HasModesIF *assembly = + ObjectManager::instance()->get(objects::TEST_ASSEMBLY); + if (assembly == nullptr) { + return; + } #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Waiting 5 Seconds and then command Test Assembly to Normal, Dual" << std::endl; + sif::info + << "Waiting 5 Seconds and then command Test Assembly to Normal, Dual" + << std::endl; #else - sif::printInfo("Waiting 5 Seconds and then command Test Assembly to Normal, Dual \n"); + sif::printInfo( + "Waiting 5 Seconds and then command Test Assembly to Normal, Dual \n"); #endif - TaskFactory::delayTask(5000); - CommandMessage modeMessage; - ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND, - DeviceHandlerIF::MODE_NORMAL, TestAssembly::submodes::DUAL); + TaskFactory::delayTask(5000); + CommandMessage modeMessage; + ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND, + DeviceHandlerIF::MODE_NORMAL, + TestAssembly::submodes::DUAL); #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Commanding Test Assembly to Normal, Dual" << std::endl; + sif::info << "Commanding Test Assembly to Normal, Dual" << std::endl; #else - sif::printInfo("Commanding Test Assembly to Normal, Dual \n"); + sif::printInfo("Commanding Test Assembly to Normal, Dual \n"); #endif - MessageQueueSenderIF::sendMessage(assembly->getCommandQueue(), &modeMessage, - MessageQueueIF::NO_QUEUE); + MessageQueueSenderIF::sendMessage(assembly->getCommandQueue(), &modeMessage, + MessageQueueIF::NO_QUEUE); #endif /* OBSW_ADD_DEVICE_HANDLER_DEMO */ } - diff --git a/bsp_stm32h7_freertos/core/ObjectFactory.cpp b/bsp_stm32h7_freertos/core/ObjectFactory.cpp index 1335143..9dbd224 100644 --- a/bsp_stm32h7_freertos/core/ObjectFactory.cpp +++ b/bsp_stm32h7_freertos/core/ObjectFactory.cpp @@ -1,15 +1,15 @@ #include "ObjectFactory.h" #include "OBSWConfig.h" #include "devices/devAddresses.h" -#include "objects/systemObjectList.h" #include "hardware_init.h" +#include "objects/systemObjectList.h" -#include "example/utility/TmFunnel.h" #include "example/core/GenericFactory.h" +#include "example/utility/TmFunnel.h" -#include "example_common/stm32h7/networking/UdpTcLwIpPollingTask.h" -#include "example_common/stm32h7/networking/TmTcLwIpUdpBridge.h" #include "example_common/stm32h7/STM32TestTask.h" +#include "example_common/stm32h7/networking/TmTcLwIpUdpBridge.h" +#include "example_common/stm32h7/networking/UdpTcLwIpPollingTask.h" #include "fsfw/datapoollocal/LocalDataPoolManager.h" #include "fsfw/monitoring/MonitoringMessageContent.h" @@ -18,84 +18,82 @@ #include "fsfw/tmtcservices/CommandingServiceBase.h" #include "fsfw/tmtcservices/PusServiceBase.h" - #if OBSW_PERFORM_L3GD20H_TEST == 1 -#include "fsfw/hal/stm32h7/spi/SpiCookie.h" -#include "fsfw/hal/stm32h7/spi/SpiComIF.h" #include "fsfw/hal/devicehandlers/GyroL3GD20Handler.h" -#include "fsfw/hal/stm32h7/spi/stm32h743ziSpi.h" +#include "fsfw/hal/stm32h7/spi/SpiComIF.h" +#include "fsfw/hal/stm32h7/spi/SpiCookie.h" #include "fsfw/hal/stm32h7/spi/spiCore.h" -DMA_HandleTypeDef* txHandle = nullptr; -DMA_HandleTypeDef* rxHandle = nullptr; +#include "fsfw/hal/stm32h7/spi/stm32h743ziSpi.h" +DMA_HandleTypeDef *txHandle = nullptr; +DMA_HandleTypeDef *rxHandle = nullptr; #endif -void ObjectFactory::produce(void* args) { - /* Located inside GenericFactory source file */ - Factory::setStaticFrameworkObjectIds(); +void ObjectFactory::produce(void *args) { + /* Located inside GenericFactory source file */ + Factory::setStaticFrameworkObjectIds(); #if OBSW_ADD_CORE_COMPONENTS == 1 - { - LocalPool::LocalPoolConfig poolCfg = { - {100, 32}, {30, 64}, {10, 128}, {2, 1024} - }; - new PoolManager(objects::TC_STORE, poolCfg); - } + { + LocalPool::LocalPoolConfig poolCfg = { + {100, 32}, {30, 64}, {10, 128}, {2, 1024}}; + new PoolManager(objects::TC_STORE, poolCfg); + } - { - LocalPool::LocalPoolConfig poolCfg = { - {100, 32}, {30, 64}, {10, 128}, {2, 1024} - }; - new PoolManager(objects::TM_STORE, poolCfg); - } + { + LocalPool::LocalPoolConfig poolCfg = { + {100, 32}, {30, 64}, {10, 128}, {2, 1024}}; + new PoolManager(objects::TM_STORE, poolCfg); + } - { - LocalPool::LocalPoolConfig poolCfg = { - {100, 32}, {30, 64}, {10, 128}, {2, 1024} - }; - new PoolManager(objects::IPC_STORE, poolCfg); - } + { + LocalPool::LocalPoolConfig poolCfg = { + {100, 32}, {30, 64}, {10, 128}, {2, 1024}}; + new PoolManager(objects::IPC_STORE, poolCfg); + } - /* UDP Server */ - new TmTcLwIpUdpBridge(objects::UDP_BRIDGE, - objects::CCSDS_DISTRIBUTOR, objects::TM_STORE, objects::TC_STORE); - new UdpTcLwIpPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE, &gnetif); + /* UDP Server */ + new TmTcLwIpUdpBridge(objects::UDP_BRIDGE, objects::CCSDS_DISTRIBUTOR, + objects::TM_STORE, objects::TC_STORE); + new UdpTcLwIpPollingTask(objects::UDP_POLLING_TASK, objects::UDP_BRIDGE, + &gnetif); #endif /* OBSW_ADD_CORE_COMPONENTS == 1 */ - ObjectFactory::produceGenericObjects(); + ObjectFactory::produceGenericObjects(); - /* Test Device Handler */ - new STM32TestTask(objects::TEST_TASK, false, true); + /* Test Device Handler */ + new STM32TestTask(objects::TEST_TASK, false, true); #if OBSW_PERFORM_L3GD20H_TEST == 1 - spi::MspCfgBase* mspCfg = nullptr; - spi::TransferModes transferMode = spi::TransferModes::DMA; - if(transferMode == spi::TransferModes::POLLING) { - auto typedCfg = new spi::MspPollingConfigStruct(); - spi::h743zi::standardPollingCfg(*typedCfg); - mspCfg = typedCfg; - } - else if(transferMode == spi::TransferModes::INTERRUPT) { - auto typedCfg = new spi::MspIrqConfigStruct(); - spi::h743zi::standardInterruptCfg(*typedCfg, IrqPriorities::HIGHEST_FREERTOS); - mspCfg = typedCfg; - } - else if(transferMode == spi::TransferModes::DMA) { - auto typedCfg = new spi::MspDmaConfigStruct(); - txHandle = new DMA_HandleTypeDef(); - rxHandle = new DMA_HandleTypeDef(); - spi::setDmaHandles(txHandle, rxHandle); - spi::h743zi::standardDmaCfg(*typedCfg, IrqPriorities::HIGHEST_FREERTOS, - IrqPriorities::HIGHEST_FREERTOS, IrqPriorities::HIGHEST_FREERTOS); - mspCfg = typedCfg; - } + spi::MspCfgBase *mspCfg = nullptr; + spi::TransferModes transferMode = spi::TransferModes::DMA; + if (transferMode == spi::TransferModes::POLLING) { + auto typedCfg = new spi::MspPollingConfigStruct(); + spi::h743zi::standardPollingCfg(*typedCfg); + mspCfg = typedCfg; + } else if (transferMode == spi::TransferModes::INTERRUPT) { + auto typedCfg = new spi::MspIrqConfigStruct(); + spi::h743zi::standardInterruptCfg(*typedCfg, + IrqPriorities::HIGHEST_FREERTOS); + mspCfg = typedCfg; + } else if (transferMode == spi::TransferModes::DMA) { + auto typedCfg = new spi::MspDmaConfigStruct(); + txHandle = new DMA_HandleTypeDef(); + rxHandle = new DMA_HandleTypeDef(); + spi::setDmaHandles(txHandle, rxHandle); + spi::h743zi::standardDmaCfg(*typedCfg, IrqPriorities::HIGHEST_FREERTOS, + IrqPriorities::HIGHEST_FREERTOS, + IrqPriorities::HIGHEST_FREERTOS); + mspCfg = typedCfg; + } - new SpiComIF(objects::SPI_COM_IF); - auto spiCookie = new SpiCookie(devaddress::L3GD20H, spi::SpiBus::SPI_1, transferMode, mspCfg, - 3900000, spi::SpiModes::MODE_3, GPIO_PIN_14, GPIOD, 32); - auto gyroDevice = new GyroHandlerL3GD20H(objects::SPI_DEVICE_TEST, objects::SPI_COM_IF, - spiCookie); - gyroDevice->setStartUpImmediately(); - gyroDevice->setGoNormalModeAtStartup(); + new SpiComIF(objects::SPI_COM_IF); + auto spiCookie = new SpiCookie(devaddress::L3GD20H, spi::SpiBus::SPI_1, + transferMode, mspCfg, 3900000, + spi::SpiModes::MODE_3, GPIO_PIN_14, GPIOD, 32); + auto gyroDevice = new GyroHandlerL3GD20H(objects::SPI_DEVICE_TEST, + objects::SPI_COM_IF, spiCookie); + gyroDevice->setStartUpImmediately(); + gyroDevice->setGoNormalModeAtStartup(); #endif } diff --git a/bsp_stm32h7_freertos/core/ObjectFactory.h b/bsp_stm32h7_freertos/core/ObjectFactory.h index 1151a9e..d3182f5 100644 --- a/bsp_stm32h7_freertos/core/ObjectFactory.h +++ b/bsp_stm32h7_freertos/core/ObjectFactory.h @@ -1,10 +1,9 @@ #ifndef MISSION_CORE_OBJECTFACTORY_H_ #define MISSION_CORE_OBJECTFACTORY_H_ - namespace ObjectFactory { - void setStatics(); - void produce(void* args); -}; +void setStatics(); +void produce(void *args); +}; // namespace ObjectFactory #endif /* MISSION_CORE_OBJECTFACTORY_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/CMakeLists.txt b/bsp_stm32h7_freertos/fsfwconfig/CMakeLists.txt index 7b92e4f..d0556e8 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/CMakeLists.txt +++ b/bsp_stm32h7_freertos/fsfwconfig/CMakeLists.txt @@ -1,11 +1,6 @@ -target_sources(${TARGET_NAME} - PRIVATE - ipc/missionMessageTypes.cpp - pollingsequence/pollingSequenceFactory.cpp -) +target_sources( + ${TARGET_NAME} PRIVATE ipc/missionMessageTypes.cpp + pollingsequence/pollingSequenceFactory.cpp) # Add include paths for the executable -target_include_directories(${TARGET_NAME} - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR} -) +target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/bsp_stm32h7_freertos/fsfwconfig/devices/devAddresses.h b/bsp_stm32h7_freertos/fsfwconfig/devices/devAddresses.h index 1ef7c6b..7a2dd00 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/devices/devAddresses.h +++ b/bsp_stm32h7_freertos/fsfwconfig/devices/devAddresses.h @@ -4,11 +4,8 @@ #include namespace devaddress { -enum devaddress: uint32_t { - L3GD20H = 1 -}; +enum devaddress : uint32_t { L3GD20H = 1 }; } - #endif /* BSP_STM32_FREERTOS_FSFWCONFIG_DEVICES_DEVADDRESSES_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/events/subsystemIdRanges.h b/bsp_stm32h7_freertos/fsfwconfig/events/subsystemIdRanges.h index c41aa68..de9c401 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/events/subsystemIdRanges.h +++ b/bsp_stm32h7_freertos/fsfwconfig/events/subsystemIdRanges.h @@ -4,8 +4,7 @@ #include "commonSubsystemIds.h" namespace SUBSYSTEM_ID { -enum subsystemId: uint8_t { -}; +enum subsystemId : uint8_t {}; } #endif /* FSFWCONFIG_TMTC_SUBSYSTEMIDRANGES_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.cpp b/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.cpp index 5fca594..e1d620c 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.cpp +++ b/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.cpp @@ -2,10 +2,10 @@ #include #include -void messagetypes::clearMissionMessage(CommandMessage* message) { - switch((message->getMessageType())) { - default: - message->setCommand(CommandMessage::CMD_NONE); - break; - } +void messagetypes::clearMissionMessage(CommandMessage *message) { + switch ((message->getMessageType())) { + default: + message->setCommand(CommandMessage::CMD_NONE); + break; + } } diff --git a/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.h b/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.h index 9733220..5f5516a 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.h +++ b/bsp_stm32h7_freertos/fsfwconfig/ipc/missionMessageTypes.h @@ -7,13 +7,14 @@ class CommandMessage; namespace messagetypes { /* First type must have number MESSAGE_TYPE::FW_MESSAGES_COUNT! */ -/* Remember to add new message types to the clearMissionMessage function below! */ +/* Remember to add new message types to the clearMissionMessage function below! + */ enum MISSION_MESSAGE_TYPE { - COSTUM_MESSAGE = FW_MESSAGES_COUNT, + COSTUM_MESSAGE = FW_MESSAGES_COUNT, }; -void clearMissionMessage(CommandMessage* message); +void clearMissionMessage(CommandMessage *message); -} +} // namespace messagetypes #endif /* FSFWCONFIG_IPC_MISSIONMESSAGETYPES_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/objects/systemObjectList.h b/bsp_stm32h7_freertos/fsfwconfig/objects/systemObjectList.h index 4f47a45..cee80bd 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/objects/systemObjectList.h +++ b/bsp_stm32h7_freertos/fsfwconfig/objects/systemObjectList.h @@ -5,15 +5,15 @@ namespace objects { enum mission_objects { - /* 0x62 ('b') Board and mission specific objects */ - UDP_BRIDGE = 0x62000300, - UDP_POLLING_TASK = 0x62000400, + /* 0x62 ('b') Board and mission specific objects */ + UDP_BRIDGE = 0x62000300, + UDP_POLLING_TASK = 0x62000400, - SPI_COM_IF = 0x63001000, - SPI_DEVICE_TEST = 0x74001000, + SPI_COM_IF = 0x63001000, + SPI_DEVICE_TEST = 0x74001000, - /* Generic name for FSFW static ID setter */ - DOWNLINK_DESTINATION = UDP_BRIDGE + /* Generic name for FSFW static ID setter */ + DOWNLINK_DESTINATION = UDP_BRIDGE }; } diff --git a/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp b/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp index 8dd121a..5af29a6 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp +++ b/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.cpp @@ -8,26 +8,30 @@ #include ReturnValue_t pst::pstPeripheralsTest(FixedTimeslotTaskIF *thisSequence) { - uint32_t length = thisSequence->getPeriodMs(); - static_cast(length); + uint32_t length = thisSequence->getPeriodMs(); + static_cast(length); #if OBSW_PERFORM_L3GD20H_TEST == 1 - thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0, DeviceHandlerIF::PERFORM_OPERATION); - thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.3, DeviceHandlerIF::SEND_WRITE); - thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.45 * length, - DeviceHandlerIF::GET_WRITE); - thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.6 * length, DeviceHandlerIF::SEND_READ); - thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.8 * length, DeviceHandlerIF::GET_READ); + thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0, + DeviceHandlerIF::PERFORM_OPERATION); + thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.3, + DeviceHandlerIF::SEND_WRITE); + thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.45 * length, + DeviceHandlerIF::GET_WRITE); + thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.6 * length, + DeviceHandlerIF::SEND_READ); + thisSequence->addSlot(objects::SPI_DEVICE_TEST, 0.8 * length, + DeviceHandlerIF::GET_READ); #endif - if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) { - return HasReturnvaluesIF::RETURN_OK; - } + if (thisSequence->checkSequence() == HasReturnvaluesIF::RETURN_OK) { + return HasReturnvaluesIF::RETURN_OK; + } #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::error << "pst::pollingSequenceInitFunction: Initialization errors!" << std::endl; + sif::error << "pst::pollingSequenceInitFunction: Initialization errors!" + << std::endl; #else - sif::printError("pst::pollingSequenceInitFunction: Initialization errors!\n"); + sif::printError("pst::pollingSequenceInitFunction: Initialization errors!\n"); #endif - return HasReturnvaluesIF::RETURN_FAILED; - + return HasReturnvaluesIF::RETURN_FAILED; } diff --git a/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.h b/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.h index 5776a29..0ee37e6 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.h +++ b/bsp_stm32h7_freertos/fsfwconfig/pollingsequence/pollingSequenceFactory.h @@ -9,7 +9,7 @@ class FixedTimeslotTaskIF; namespace pst { ReturnValue_t pstPeripheralsTest(FixedTimeslotTaskIF *thisSequence); ReturnValue_t pollingSequenceExamples(FixedTimeslotTaskIF *thisSequence); -ReturnValue_t pollingSequenceDevices(FixedTimeslotTaskIF* thisSequence); -} +ReturnValue_t pollingSequenceDevices(FixedTimeslotTaskIF *thisSequence); +} // namespace pst #endif /* POLLINGSEQUENCE_POLLINGSEQUENCFACTORY_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/returnvalues/classIds.h b/bsp_stm32h7_freertos/fsfwconfig/returnvalues/classIds.h index 47cc10a..9187dfa 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/returnvalues/classIds.h +++ b/bsp_stm32h7_freertos/fsfwconfig/returnvalues/classIds.h @@ -4,9 +4,7 @@ #include namespace CLASS_ID { -enum classIds: uint8_t { -}; +enum classIds : uint8_t {}; } - #endif /* FSFWCONFIG_RETURNVALUES_CLASSIDS_H_ */ diff --git a/bsp_stm32h7_freertos/fsfwconfig/tmtc/apid.h b/bsp_stm32h7_freertos/fsfwconfig/tmtc/apid.h index eecc485..05b6133 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/tmtc/apid.h +++ b/bsp_stm32h7_freertos/fsfwconfig/tmtc/apid.h @@ -1,8 +1,8 @@ #ifndef FSFWCONFIG_TMTC_APID_H_ #define FSFWCONFIG_TMTC_APID_H_ -#include #include +#include namespace apid { static const uint16_t APID = COMMON_APID; diff --git a/bsp_stm32h7_freertos/fsfwconfig/tmtc/pusIds.h b/bsp_stm32h7_freertos/fsfwconfig/tmtc/pusIds.h index 434560c..13b59c7 100644 --- a/bsp_stm32h7_freertos/fsfwconfig/tmtc/pusIds.h +++ b/bsp_stm32h7_freertos/fsfwconfig/tmtc/pusIds.h @@ -3,5 +3,4 @@ #include - #endif /* FSFWCONFIG_TMTC_PUSIDS_H_ */ diff --git a/bsp_stm32h7_freertos/main.cpp b/bsp_stm32h7_freertos/main.cpp index 35682a1..01af21c 100644 --- a/bsp_stm32h7_freertos/main.cpp +++ b/bsp_stm32h7_freertos/main.cpp @@ -1,7 +1,7 @@ -#include "hardware_init.h" -#include "boardconfig.h" -#include "OBSWVersion.h" #include "OBSWConfig.h" +#include "OBSWVersion.h" +#include "boardconfig.h" +#include "hardware_init.h" #if OBSW_ADD_LWIP_COMPONENTS == 1 #include @@ -17,15 +17,14 @@ #include #include "FreeRTOS.h" -#include "task.h" #include "cmsis_os.h" +#include "task.h" #include #if FSFW_CPP_OSTREAM_ENABLED == 1 #include #endif - #if !defined(BOARD_NAME) #define BOARD_NAME "unknown board" #endif @@ -45,46 +44,45 @@ void initTask(void *parameters); * @author R. Mueller, J. Meier */ int main() { - performHardwareInit(); + performHardwareInit(); - xTaskCreate(initTask, "INIT_TASK", 2048, nullptr, 9, nullptr); + xTaskCreate(initTask, "INIT_TASK", 2048, nullptr, 9, nullptr); - /* Start scheduler */ - osKernelStart(); + /* Start scheduler */ + osKernelStart(); - /* Should not be reached, scheduler should now be running. */ - for(;;) {} - return 0; + /* Should not be reached, scheduler should now be running. */ + for (;;) { + } + return 0; } void initTask(void *parameters) { #if OBSW_ADD_LWIP_COMPONENTS == 1 - /* Initialize the LwIP stack */ - lwip_init(); + /* Initialize the LwIP stack */ + lwip_init(); - /* Configure the Network interface */ - Netif_Config(); + /* Configure the Network interface */ + Netif_Config(); #endif - utility::commonInitPrint("FreeRTOS", BOARD_NAME); + utility::commonInitPrint("FreeRTOS", BOARD_NAME); #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Creating objects.." << std::endl; + sif::info << "Creating objects.." << std::endl; #else - sif::printInfo("Creating objects..\n\r"); + sif::printInfo("Creating objects..\n\r"); #endif - ObjectManager* objManager = ObjectManager::instance(); - objManager->setObjectFactoryFunction(ObjectFactory::produce, nullptr); - objManager->initialize(); + ObjectManager *objManager = ObjectManager::instance(); + objManager->setObjectFactoryFunction(ObjectFactory::produce, nullptr); + objManager->initialize(); #if FSFW_CPP_OSTREAM_ENABLED == 1 - sif::info << "Creating tasks.." << std::endl; + sif::info << "Creating tasks.." << std::endl; #else - sif::printInfo("Creating tasks..\n\r"); + sif::printInfo("Creating tasks..\n\r"); #endif - InitMission::createTasks(); - TaskFactory::instance()->deleteTask(nullptr); - + InitMission::createTasks(); + TaskFactory::instance()->deleteTask(nullptr); } - diff --git a/bsp_stm32h7_freertos/utility/CMakeLists.txt b/bsp_stm32h7_freertos/utility/CMakeLists.txt index 5b6dafc..65575f4 100644 --- a/bsp_stm32h7_freertos/utility/CMakeLists.txt +++ b/bsp_stm32h7_freertos/utility/CMakeLists.txt @@ -1,4 +1 @@ -target_sources(${TARGET_NAME} PRIVATE - print.c -) - +target_sources(${TARGET_NAME} PRIVATE print.c) diff --git a/bsp_stm32h7_freertos/utility/print.c b/bsp_stm32h7_freertos/utility/print.c index cae130e..f1674de 100644 --- a/bsp_stm32h7_freertos/utility/print.c +++ b/bsp_stm32h7_freertos/utility/print.c @@ -1,7 +1,6 @@ -#include #include +#include -void printChar(const char* character) { - HAL_UART_Transmit(&huart3, (uint8_t *)character, 1 , DEBUG_UART_MS_TIMEOUT); +void printChar(const char *character) { + HAL_UART_Transmit(&huart3, (uint8_t *)character, 1, DEBUG_UART_MS_TIMEOUT); } - diff --git a/example_common b/example_common index 8203995..d34effb 160000 --- a/example_common +++ b/example_common @@ -1 +1 @@ -Subproject commit 8203995deb087c0a51ce7ec7fdc0f0f4f21d06ce +Subproject commit d34effb278c645fb6532db56521dd4d08eb0f4a6 diff --git a/scripts/auto-formatter.sh b/scripts/auto-formatter.sh new file mode 100755 index 0000000..d73e62b --- /dev/null +++ b/scripts/auto-formatter.sh @@ -0,0 +1,32 @@ +#!/bin/bash +if [[ ! -f README.md ]]; then + cd .. +fi + +folder_list=( + "./bsp_stm32h7_freertos" + "./example_common" +) + +cmake_fmt="cmake-format" +file_selectors="-iname CMakeLists.txt" +if command -v ${cmake_fmt} &> /dev/null; then + echo "Auto-formatting all CMakeLists.txt files" + ${cmake_fmt} -i CMakeLists.txt + for dir in ${folder_list[@]}; do + find ${dir} ${file_selectors} | xargs ${cmake_fmt} -i + done +else + echo "No ${cmake_fmt} tool found, not formatting CMake files" +fi + +cpp_format="clang-format" +file_selectors="-iname *.h -o -iname *.cpp -o -iname *.c -o -iname *.tpp" +if command -v ${cpp_format} &> /dev/null; then + for dir in ${folder_list[@]}; do + echo "Auto-formatting C/C++ files in ${dir} recursively" + find ${dir} ${file_selectors} | xargs ${cpp_format} --style=file -i + done +else + echo "No ${cpp_format} tool found, not formatting C++/C files" +fi