при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Код: Выделить всё
static inline void unlock() { base()->KEY = 0x8555AAA1; }Код: Выделить всё
_static_always_inline_ void write(uint32_t data) // Тут вроде uint16_t надо
Код: Выделить всё
_static_always_inline_ void toggle()
{
base()->ODR = ~base()->ODR;
Код: Выделить всё
template<uint32_t PM=PinsMask>
static inline void toggle()
{
if constexpr (PM == 0xFFFF)
base()->ODR = ~base()->ODR;
else if constexpr (PM == 0x00FF)
*pVU8(&base()->ODR) = ~*pVU8(&base()->ODR);
else if constexpr (PM == 0xFF00)
*(pVU8(&base()->ODR) + 1) = ~*(pVU8(&base()->ODR) + 1);
else if constexpr (std::has_single_bit(PM))
{ if (base()->ODR & PM) clear(); else set(); }
else
base()->BSRR = (PM << 16) | (~base()->ODR & PM);
}Код: Выделить всё
template<uint32_t PM=PinsMask>
static inline void toggle()
{
if constexpr (PM == 0xFFFF)
base()->ODR = ~base()->ODR;
else
if constexpr (std::has_single_bit(PM)==1)
if(base()->ODR & PM) clear<PM>(); else set<PM>();
else
base()->BSRR = (PM << 16) | (~base()->ODR & PM);
}Код: Выделить всё
template<uint8_t PM=PinsMask>
static inline void toggle()
{
if constexpr (PinToggle)
{
if constexpr (std::popcount(PM) == 1)
base()->PIN |= PM;
else
base()->PIN = PM;
}
else
{
if constexpr (std::popcount(PM) == 1)
{
if (base()->PORT & PM) clear(); else set();
}
else
base()->PORT ^= PM;
}
}Код: Выделить всё
template<uint32_t PM=PinsMask>
static inline void toggle()
{
base()->IDR = PM;
}Код: Выделить всё
_always_inline_ TSTM32Fx_GPIO& operator=(const TSTM32Fx_GPIO& gpio)
{
write(gpio.read());Что-что, простите? Даааа, что-то у вас там ниалёbase()->IDR = PM;

А в показанном коде НЕТ контроллера Миландра, только STM - там так и написано в комментах. Отсюда возникает ложное впечатление, что на STM можно сделать разблокировку. А всего лишь надо было соблюдать принципы программирования, которые изучаются в ВУЗах. Вы - не учились, не знаете их, потому и пишите какую-то ересь. Но понтов - выше крыши. Эти понты только на местных действуют. На меня - нетА на контроллерах Миландра будет.

А зачем тогда его там писать? Так, для создания наполнения, чтобы на форум выложить и всех поразить? Ну дак дешевые понты действуют только на неосведомленных. А образованным это сигнал - погромистъ, писавший сию маляву, был глуп и необразовантогда и задавать его не обязательно.