generated from Template/H563ZI-HAL-CMake-Template
新增 DebugSerialPort 支持,CommonCenter、CanMv 和 DfPlayer 改用智能指针
Some checks failed
Build and Upload Artifact / build and upload-artifact (push) Has been cancelled
Some checks failed
Build and Upload Artifact / build and upload-artifact (push) Has been cancelled
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include "../Common/df_player.hpp"
|
||||
#include "../Common/ultrasonic.hpp"
|
||||
#include "../config.hpp"
|
||||
#include "Common/serial_port.hpp"
|
||||
|
||||
class CommonCenter {
|
||||
public:
|
||||
@@ -31,4 +32,14 @@ public:
|
||||
}
|
||||
return *instance;
|
||||
}
|
||||
|
||||
static SerialPort& GetDebugSerialPort() {
|
||||
static constexpr auto kLength = 256;
|
||||
static constexpr auto kTimeout = 1000;
|
||||
static SerialPort* instance = nullptr;
|
||||
if (instance == nullptr) {
|
||||
instance = new SerialPort(Config::kDebugUart, kLength, kTimeout);
|
||||
}
|
||||
return *instance;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
#include "../Common/serial_port.hpp"
|
||||
|
||||
class CanMv {
|
||||
public:
|
||||
explicit CanMv(UART_HandleTypeDef* uart) : serialPort(new SerialPort(uart, kLength, kTimeout)) {}
|
||||
explicit CanMv(UART_HandleTypeDef* uart) : serialPort(std::make_unique<SerialPort>(uart, kLength, kTimeout)) {}
|
||||
|
||||
~CanMv() {
|
||||
delete serialPort;
|
||||
}
|
||||
~CanMv() = default;
|
||||
|
||||
private:
|
||||
static constexpr uint32_t kLength = 128;
|
||||
static constexpr uint32_t kTimeout = 10;
|
||||
SerialPort* serialPort;
|
||||
std::unique_ptr<SerialPort> serialPort;
|
||||
};
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
#include "../Common/serial_port.hpp"
|
||||
|
||||
class DfPlayer {
|
||||
public:
|
||||
explicit DfPlayer(UART_HandleTypeDef* uart) : serialPort(new SerialPort(uart, kLength, kTimeout)) {}
|
||||
explicit DfPlayer(UART_HandleTypeDef* uart) : serialPort(std::make_unique<SerialPort>(uart, kLength, kTimeout)) {}
|
||||
|
||||
~DfPlayer() {
|
||||
delete serialPort;
|
||||
}
|
||||
~DfPlayer() = default;
|
||||
|
||||
void Play();
|
||||
void Stop();
|
||||
@@ -52,7 +51,7 @@ private:
|
||||
|
||||
static constexpr uint32_t kLength = 128;
|
||||
static constexpr uint32_t kTimeout = 10;
|
||||
SerialPort* serialPort;
|
||||
std::unique_ptr<SerialPort> serialPort;
|
||||
|
||||
void SendCommand(Command cmd, uint16_t param = 0);
|
||||
|
||||
|
||||
@@ -2,35 +2,45 @@
|
||||
#include "stm32h563xx.h"
|
||||
|
||||
#include "Center/common_center.hpp"
|
||||
#include "Common/serial_port.hpp"
|
||||
#include "Helper/gpio_helper.hpp"
|
||||
#include "Helper/delay_helper.h"
|
||||
#include "config.hpp"
|
||||
|
||||
|
||||
void TerminateHandler() {
|
||||
auto led = GpioHelper::GpioInit(GPIOB, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_PIN_SET);
|
||||
auto led = Config::kLed;
|
||||
while (true) {
|
||||
led.Toggle();
|
||||
DelayS(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Setup() {
|
||||
void GpioSetup() {
|
||||
GpioHelper::EnableAllGpioPeripheral();
|
||||
GpioHelper::GpioInit(GPIOB, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
void CommonSetup() {
|
||||
CommonCenter::GetUltrasonic();
|
||||
CommonCenter::GetDfPlayer();
|
||||
CommonCenter::GetCanMv();
|
||||
CommonCenter::GetDebugSerialPort();
|
||||
}
|
||||
|
||||
void Setup() {
|
||||
GpioSetup();
|
||||
DelaySetup();
|
||||
auto ultrasonic = CommonCenter::GetUltrasonic();
|
||||
auto dfPlayer = CommonCenter::GetDfPlayer();
|
||||
auto canMv = CommonCenter::GetCanMv();
|
||||
CommonSetup();
|
||||
}
|
||||
|
||||
extern "C" void AppStart() {
|
||||
Setup();
|
||||
auto ultrasonic = CommonCenter::GetUltrasonic();
|
||||
auto dfPlayer = CommonCenter::GetDfPlayer();
|
||||
auto canMv = CommonCenter::GetCanMv();
|
||||
auto& ultrasonic = CommonCenter::GetUltrasonic();
|
||||
auto& debugSerialPort = CommonCenter::GetDebugSerialPort();
|
||||
while (true) {
|
||||
// Example usage of the classes
|
||||
ultrasonic.GetDistance();
|
||||
dfPlayer.PlayTrack(1);
|
||||
|
||||
DelayMs(1000); // Delay for 1 second
|
||||
auto disatnce = ultrasonic.GetDistance();
|
||||
debugSerialPort.WriteLineBlocking("Distance: %.2f cm", disatnce);
|
||||
DelayS(1); // Delay for 1 second
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,11 @@ struct Config {
|
||||
uint32_t channel;
|
||||
} kCaptureConfig = {{GPIOA, GPIO_PIN_0}, &htim7, TIM_CHANNEL_1};
|
||||
|
||||
static inline UART_HandleTypeDef* kDebugUart = &hcom_uart[COM1];
|
||||
|
||||
static inline UART_HandleTypeDef* kDfPlayerUart = &hcom_uart[COM1];
|
||||
|
||||
static inline UART_HandleTypeDef* kCanMvUart = &hcom_uart[COM1];
|
||||
|
||||
static inline UART_HandleTypeDef* kCanMvUart = &hcom_uart[COM1];
|
||||
|
||||
static inline GpioHelper::Gpio kLed = {GPIOB, GPIO_PIN_0};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user