Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Объектно-ориентированное программирование подразумевает наличие в программе классов, взаимодействующих между собой.
Объектов, а не классов. Оно так и называется объектно-ориентированное.
Нет. Просто объектно-ориентированный код, написанный без классов, не перестаёт быть объектно-ориентированным. И в программе взаимодействуют объекты, а классы — это один из способов описать поведение объектов.
Да, код в котором не создаётся ни одного объекта, а используются только статические методы — это не ООП.
struct ExampleTrait {
constexpr static std::uint32_t kParam1 = 0;
constexpr static std::uint32_t kParam2 = 1;
};
template < class Trait >
class Bar {
constexpr static std::uint32_t kParam1 = Trait::kParam1;
constexpr static std::uint32_t kParam2 = Trait::kParam2;
// Далее идут другие константы и набор статических функций
};template < class... dev >
class DeviceSet
{
public:
inline constexpr static void Init() { ( dev::Init(), ... ); };
};
template < class... IO >
class IoSet final: public DeviceSet< IO... >
{
public:
inline constexpr static void Set() { ( IO::Set(), ... ); };
inline constexpr static void Reset() { ( IO::Reset(), ... ); };
inline constexpr static void Toggle(){ ( IO::Toggle(), ... ); };
};using Leds = mpp::gpio::IoGroup < LedBlue, LedRed, LedOrange, LedGreen >;
bsp::Leds::Init();
bsp::Leds::Toggle();_Regs::CR1Pack<_Regs::CR1::UE, _Regs::CR1::RE, _Regs::CR1::TE>::Set();
// Еще какие-то настройки.
UART->CR1 = UART->CR1 | UART_CR1_UE | UART_CR1_RE | UART_CR1_TE; Что касается статей lamerok, в них много интересного, но шаблонная обертка над каждым битом просто лишена смысла.
Поправлю, там обертка не над каждым битом, а над значением поля регистра. Смысл был в том, чтобы запретить ставить значения не описанные спецификацией. В случае с CMSIS можно поставить что угодно, и какой угодно define, который может быть вообще не иметь отношения к регистру. В обертке де будет ошибка компиляции.
Снова про шаблоны C++ в микроконтроллерах