ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
1163463 Топик полностью
VladislavS. (12.01.2022 13:15, просмотров: 317) ответил evgeniy1294 на * В таком виде это не сильно отличается от того что можно сделать макросами в С.
Зачем вы делаете выводы о моём коде по паре функций из библиотеки? То что пишется эвридэй сильно проще. :) 
Честно, понять исходники библиотеки std сильно проще ваших.
using LED = TLed<GPIO::PA5>;
using KEY = TKey<GPIO::PC13>;

KEY key;

int main()
{       
  for(;;)
  {    
    if(key.pressed()) 
    {
      LED::Toggle();   
    }
  }
}

void SysTick_Handler()
{
  key.Scan();
}


Честно, понять исходники библиотеки std сильно проще ваших.

Вот не уверен.


В чём преимущество вашего кода?

В той самой связи между С++ и ассемблером о которой говорил Мастер.


Какой смысл в обращении к отдельным байтам регистра bsrr, если можно работать масками, вычисляемыми на этапе компиляции?

Для ARM есть разница загрузить из памяти 32-битную маску/константу в РОН или 8-битную, чтобы потом её в регистр периферии записать. Или можно избежать таким образом процесса чтение-модификация-запись. Это реальная экономия на памяти/скорости. Вот С-программисты этим не заморачиваются, хотя почему-то считают что намного ближе к железу. Оно и понятно, каждый раз это делать руками - упаришься, а я заставляю компилятор делать это при каждом доступе к порту.