diff --git a/radio/src/io/multi_firmware_update.cpp b/radio/src/io/multi_firmware_update.cpp index e5d50abdb..3e5738b6e 100644 --- a/radio/src/io/multi_firmware_update.cpp +++ b/radio/src/io/multi_firmware_update.cpp @@ -26,6 +26,7 @@ #include "multi_firmware_update.h" #include "stk500.h" #include "debug.h" +#include "timers_driver.h" #if defined(LIBOPENUI) #include "libopenui.h" diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 5a4a93b5a..c76122558 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -582,14 +582,6 @@ void flightReset(uint8_t check=true); #define RESET_THR_TRACE() s_timeCum16ThrP = s_timeCumThr = 0 #endif -#if defined(SIMU) - uint16_t getTmr2MHz(); - uint16_t getTmr16KHz(); -#else - static inline uint16_t getTmr2MHz() { return TIMER_2MHz_TIMER->CNT; } -#endif - - #if defined(SPLASH) void doSplash(); #endif diff --git a/radio/src/pulses/pxx1.h b/radio/src/pulses/pxx1.h index 1ed7b399c..6c2fd8d7b 100644 --- a/radio/src/pulses/pxx1.h +++ b/radio/src/pulses/pxx1.h @@ -25,20 +25,6 @@ #include "pxx.h" #include "crc.h" -#if defined(INTMODULE_HEARTBEAT_GPIO) -struct HeartbeatCapture { -#if !defined(INTMODULE_USART) - uint32_t timestamp; -#endif -#if defined(DEBUG_LATENCY) - uint32_t count; -#endif - uint8_t valid; -}; - -extern volatile HeartbeatCapture heartbeatCapture; -#endif - class Pxx1CrcMixin { protected: void initCrc() diff --git a/radio/src/sbus.cpp b/radio/src/sbus.cpp index 317f1b85e..8ed40d1c0 100644 --- a/radio/src/sbus.cpp +++ b/radio/src/sbus.cpp @@ -21,6 +21,7 @@ #include "opentx.h" #include "sbus.h" +#include "timers_driver.h" #define SBUS_FRAME_GAP_DELAY 1000 // 500uS diff --git a/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp b/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp index bba0f6106..e06db23af 100644 --- a/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp +++ b/radio/src/targets/common/arm/stm32/heartbeat_driver.cpp @@ -21,6 +21,10 @@ #include "mixer_scheduler.h" #include "board.h" +#include "debug.h" + +#include "heartbeat_driver.h" +#include "timers_driver.h" #if defined(INTMODULE_HEARTBEAT_GPIO) @@ -79,9 +83,7 @@ void stop_intmodule_heartbeat() void check_intmodule_heartbeat() { if (EXTI_GetITStatus(INTMODULE_HEARTBEAT_EXTI_LINE) != RESET) { -#if !defined(INTMODULE_USART) heartbeatCapture.timestamp = getTmr2MHz(); -#endif #if defined(DEBUG_LATENCY) heartbeatCapture.count++; #endif diff --git a/radio/src/targets/common/arm/stm32/heartbeat_driver.h b/radio/src/targets/common/arm/stm32/heartbeat_driver.h index aad432d73..de7d98866 100644 --- a/radio/src/targets/common/arm/stm32/heartbeat_driver.h +++ b/radio/src/targets/common/arm/stm32/heartbeat_driver.h @@ -21,7 +21,16 @@ #pragma once +struct HeartbeatCapture { + uint32_t timestamp; + uint8_t valid; +#if defined(DEBUG_LATENCY) + uint32_t count; +#endif +}; + +extern volatile HeartbeatCapture heartbeatCapture; + void init_intmodule_heartbeat(); void check_intmodule_heartbeat(); void stop_intmodule_heartbeat(); - diff --git a/radio/src/targets/common/arm/stm32/timers_driver.cpp b/radio/src/targets/common/arm/stm32/timers_driver.cpp index f7a8b026b..d058f51ba 100644 --- a/radio/src/targets/common/arm/stm32/timers_driver.cpp +++ b/radio/src/targets/common/arm/stm32/timers_driver.cpp @@ -52,8 +52,7 @@ void stop1msTimer() NVIC_DisableIRQ(INTERRUPT_xMS_IRQn); } -// TODO use the same than board_sky9x.cpp -void interrupt1ms() +static void interrupt1ms() { static uint8_t pre_scale; // Used to get 10 Hz counter diff --git a/radio/src/targets/common/arm/stm32/timers_driver.h b/radio/src/targets/common/arm/stm32/timers_driver.h new file mode 100644 index 000000000..a50d4a9a7 --- /dev/null +++ b/radio/src/targets/common/arm/stm32/timers_driver.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) EdgeTX + * + * Based on code named + * opentx - https://github.com/opentx/opentx + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#pragma once + +#if defined(SIMU) + +uint16_t getTmr2MHz(); + +#elif defined(STM32) + +#include "board.h" + +void init2MhzTimer(); +void init1msTimer(); +void stop1msTimer(); + +static inline uint16_t getTmr2MHz() { return TIMER_2MHz_TIMER->CNT; } + +#endif diff --git a/radio/src/targets/horus/board.cpp b/radio/src/targets/horus/board.cpp index 973f1142d..fccc3036a 100644 --- a/radio/src/targets/horus/board.cpp +++ b/radio/src/targets/horus/board.cpp @@ -22,6 +22,7 @@ #include "opentx.h" #include "hal/adc_driver.h" +#include "../common/arm/stm32/timers_driver.h" #if !defined(PCBX12S) #include "../common/arm/stm32/stm32_hal_adc.h" diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 08c458263..d982ec70e 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -78,10 +78,6 @@ extern uint16_t sessionTimer; void boardInit(); void boardOff(); -// Timers driver -void init2MhzTimer(); -void init1msTimer(); - // PCBREV driver enum { // X12S diff --git a/radio/src/targets/horus/extmodule_driver.cpp b/radio/src/targets/horus/extmodule_driver.cpp index 5f3c2f1c9..ff8e926ab 100644 --- a/radio/src/targets/horus/extmodule_driver.cpp +++ b/radio/src/targets/horus/extmodule_driver.cpp @@ -21,6 +21,7 @@ #include "opentx.h" #include "extmodule_driver.h" +#include "timers_driver.h" #if defined(CROSSFIRE) #include "pulses/crossfire.h" diff --git a/radio/src/targets/nv14/board.cpp b/radio/src/targets/nv14/board.cpp index 804a0a3bc..0eeea7b87 100644 --- a/radio/src/targets/nv14/board.cpp +++ b/radio/src/targets/nv14/board.cpp @@ -24,6 +24,7 @@ #include "hal/adc_driver.h" #include "../common/arm/stm32/stm32_hal_adc.h" +#include "../common/arm/stm32/timers_driver.h" #if defined(__cplusplus) && !defined(SIMU) extern "C" { diff --git a/radio/src/targets/nv14/board.h b/radio/src/targets/nv14/board.h index 2ceb31ac8..1ddbce128 100644 --- a/radio/src/targets/nv14/board.h +++ b/radio/src/targets/nv14/board.h @@ -67,10 +67,6 @@ extern HardwareOptions hardwareOptions; void boardInit(); void boardOff(); -// Timers driver -void init2MhzTimer(); -void init1msTimer(); - // CPU Unique ID #define LEN_CPU_UID (3*8+2) void getCPUUniqueID(char * s); diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index a3fb98637..5d4ab4ecc 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -24,6 +24,8 @@ #include "hal/adc_driver.h" #include "stm32_hal_adc.h" +#include "../common/arm/stm32/timers_driver.h" + #if defined(__cplusplus) extern "C" { #endif diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index a34ba42ad..4506028c0 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -65,10 +65,6 @@ extern uint16_t sessionTimer; void boardInit(); void boardOff(); -// Timers driver -void init2MhzTimer(); -void init1msTimer(); - // PCBREV driver enum { // X7 diff --git a/radio/src/targets/taranis/extmodule_driver.cpp b/radio/src/targets/taranis/extmodule_driver.cpp index 5500ec125..86e33bfb4 100644 --- a/radio/src/targets/taranis/extmodule_driver.cpp +++ b/radio/src/targets/taranis/extmodule_driver.cpp @@ -21,6 +21,7 @@ #include "opentx.h" #include "extmodule_driver.h" +#include "timers_driver.h" #if defined(CROSSFIRE) #include "pulses/crossfire.h" diff --git a/radio/src/tasks.cpp b/radio/src/tasks.cpp index f49e380ca..4efb230d4 100644 --- a/radio/src/tasks.cpp +++ b/radio/src/tasks.cpp @@ -21,6 +21,7 @@ #include "opentx.h" #include "mixer_scheduler.h" +#include "timers_driver.h" RTOS_TASK_HANDLE menusTaskId; RTOS_DEFINE_STACK(menusStack, MENUS_STACK_SIZE);