diff --git a/Core/App/Center/common_center.hpp b/Core/App/Center/common_center.hpp new file mode 100644 index 0000000..4c28694 --- /dev/null +++ b/Core/App/Center/common_center.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "../Common/ultrasonic.hpp" +#include "../config.hpp" + +class CommonCenter { +public: + static Ultrasonic& GetUltrasonic() { + static Ultrasonic* instance = nullptr; + if (instance == nullptr) { + instance = new Ultrasonic( + Config::kCaptureConfig.trigger, Config::kCaptureConfig.timer, Config::kCaptureConfig.channel); + } + return *instance; + } +}; diff --git a/Core/App/app.cpp b/Core/App/app.cpp index d2ef5f1..26ea7b5 100644 --- a/Core/App/app.cpp +++ b/Core/App/app.cpp @@ -3,11 +3,13 @@ #include "Common/serial_port.hpp" #include "Helper/gpio_helper.hpp" +#include "Center/common_center.hpp" void Setup() { GpioHelper::EnableAllGpioPeripheral(); DelaySetup(); + auto ultrasonic = CommonCenter::GetUltrasonic(); } extern "C" void AppStart() { diff --git a/Core/App/config.hpp b/Core/App/config.hpp new file mode 100644 index 0000000..9e71dbe --- /dev/null +++ b/Core/App/config.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "stm32h563xx.h" +#include "tim.h" + +#include "./Helper/gpio_helper.hpp" + +struct Config { + static inline struct { + GpioHelper::Gpio trigger; + TIM_HandleTypeDef* timer; + uint32_t channel; + } kCaptureConfig = {{GPIOA, GPIO_PIN_0}, &htim7, TIM_CHANNEL_1}; +};