ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1105622 Топик полностью
IBAH (02.06.2021 19:26, просмотров: 273) ответил Nikolay801_ на У них два 16-ти битных регистра один устанавливает 1 в отдельные битики, другой сбрасывает отдельные битики, их можно разом одной записью в 32бита, при это изменится только тот пин что тебе нужно, а другие не изменятся. Вместо OUT |= 0x80; получается BSRR=0x00408000. вместо реад-модифю-врайт только запись. И воно ыще АТОМАРНА!!!
Регистр БитСетРесет есть у всех СТМов! 

Как выглядят функции установки сброса пина

ё
__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
{
  WRITE_REG(GPIOx->BSRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU);
}

__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
{
  WRITE_REG(GPIOx->BRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU);
}


ё

Нафига в описании константы сдвигать на GPIO_PIN_MASK_POS

+ танцы с бубном

чтобы потом сдвигать в обратную сторону

У меня такое ощущение, что они хотят запутать потенциального противника партнера