ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1050217 Топик полностью
VladislavS. (07.11.2020 16:16, просмотров: 251) ответил mse homjak на Смотря что считать ресурсом. Процову флэшь или своё время.
Если я владею более оптимальным методом, то о какой трате времени речь? Вот простой пример. Эти два выражения делают одно и то же, а код во втором случае получается более оптимальным. 
GPIOA->BSRR = 1<<16;
*((volatile uint16_t *)&GPIOA->BSRR+1) = 1;

Много я потрачу времени, применяя это знание? А если оберну это в класс и поручу применять эту оптимизацию компилятору? Он это делает без устали и траты моего времени. Можно дальше развить идею.

template<uint32_t PM=PinsMask>
static inline void Clear()
{
  if constexpr (PM == 0xFFFF)
    base()->ODR = 0;
  else if constexpr (PM == 0x00FF)
    *pVU8(&base()->ODR) = 0;
  else if constexpr (PM == 0xFF00)
    *(pVU8(&base()->ODR) + 1) = 0;
  else if constexpr((PM & 0xFF)==0)
    *(pVU8(&base()->BSRR)+3) = PM>>8;
  else
    *(pVU16(&base()->BSRR)+1) = PM;
}

Трата времени в конечном итоге будет экономией. Потому что вместо первого выражения я буду писать

PA0::Clear();