Вот не могу понять его смысл если есть bsrr, ведь не просто так его запилили
Думается что ход мыслей у разработчиков камня был такой:
У нас есть регистр ODR, но менять его состояние долго - чтение порта > наложение маски > возврат результата в регистр.
Да, согласились разрабы, это очень долго, давайте ка запилим регистр BSRR, с помощью которого можно менять состояние отдельного бита в порту, да ещё и за один такт, вот народ то обрадуется.
Круто! Воскликнули разработчики, и решили что поскольку камень то у нас 32-ух битный, а порты 16-ти битные, то давайте ка запись единички в левую часть будет сбрасывать бит, а запись опять же единички в правую часть, устанавливать.
И снова ликование, - "мы сделали атомарное переключение, да ещё и в один регистр всё уместили, мы молодцы !".
Потом посидели и ещё немного подумали, - "а на фига мы всё в один регистр запихали, ведь памяти у нас вагон и маленькая тележка, а из-за того что всё в одном регистре, не очень то удобно этим оперировать". Ведь гораздо удобнее было бы, если бы это были два разных регистра, и тогда записывая в один регистр число 0х0001 мы сможем устанавливать бит, а записывая то же число (0х0001), но в другой регистр будем снимать этот бит. Операция осталась такая же атомарная, но теперь не нужно морочится со сдвигом чисел.
Эврика! Воскликнули разработчики и побежали мутить регистр BRR.
Как то так.