Size: a a a

2020 January 04

s

stD in STM32
источник

s

stD in STM32
Такие вот писатели HAl'а "творческие" ребята.

Впрочем может я не прав, и у регистра BRR есть ещё какой-то сакральный смысл.
источник

б

безымени.jpg in STM32
да там нету и дефайна для BSRRH и BSRRL
источник

A

ASSembler in STM32
stD
Такие вот писатели HAl'а "творческие" ребята.

Впрочем может я не прав, и у регистра BRR есть ещё какой-то сакральный смысл.
Шутники
источник

s

stD in STM32
безымени.jpg
да там нету и дефайна для BSRRH и BSRRL
Они есть не у всех камней.
источник

s

stD in STM32
Нужно на кокретный камень смотреть мануал.
источник

YL

Yury Lyushnevsky in STM32
Если мы устанавливаем бит в BRR, то бит в регистре BSRR автоматически сбрасывается (чтобы потом его установить)?
источник

s

stD in STM32
Регистры BRR и BSRR не взаимодействуют между друг другом, это две самостоятельные, сущности. Они управляют регистром ODR. BRR и BSRR это не регистры, которые удерживаются в каком-то состоянии, это что-то вроде посредников между пользователем и "настоящим" регистром ODR. Запись единицы в BRR или BSRR это не запись значения (в обычном смысле), это типа команда, говорящая о том, что нужно что-то сделать с регистром ODR. И как только команда будет выполнена, BRR или BSRR тут же обнулится.
источник

s

stD in STM32
источник

s

stD in STM32
Вот у нас есть регистр ODR, он отвечает за то, что будет выведено на ножку. То есть, грубо говоря регистр ODR напрямую соединён с ножками.

Изменить отдельный бит-ножку в этом регистре мы не можем, можем только перезаписать весь порт. Точнее конечно же можем, например записывая попеременно в этот регистр числа 0х0001 и 0х0000, мы будем управлять одним битом-ножкой. Но, мы можем так делать только если другие ножки на этом порту не используются. А если используются то соответственно их значение тоже будет меняться (в нашем случае в остальные биты-ножки будет постоянно записываться ноль).

А что же делать если нужно чтоб состояние других ножек (на этом порту) оставалось прежним ?

Для этого нужно сначала прочитать весь порт (чтоб знать что там записано), изменить нужный бит (только тот который нужно) и записать всё это обратно в порт. Вот вам и долгая операция -  чтение > изменение > запись.

Помимо того что это долго, так ещё и прерывание может произойти в этот момент и порушить всю нашу операцию. В общем дело дрянь.
источник

s

stD in STM32
Так вот, чтоб всего этого избежать, придумали регистры BRR и BSRR.

Изначально регистр BRR весь в нулях, это расценивается системой как то, что ничего делать не надо.

Как только мы записываем в BRR единичку в какой-то бит или в несколько битов выборочно, например в 3, 7 и 9, то регистр BRR тут же понимает, что он должен обнулить биты 3, 7 и 9 в регистре ODR, и делает это.

Другие биты в регистре BRR (которые равны нулю) не влияют на соответствующие биты в регистре ODR.

Таким образом мы за один такт (который тратится на запись единицы в BRR) меняем значение конкретного бита в регистре ODR. BRR взаимодействует с ODR на аппаратном уровне, без нашего участия.

После чего весь регистр BRR обнуляется и ждёт следующих распоряжений.

То есть, единичка в одном или нескольких битах в регитрах BSRR или BRR, это маркер того, что надо выполнить  операцию над соответствующими битами в регистре ODR.
источник

s

stD in STM32
Так же работает и регистр BSRR. Если мы записываем единички в биты 3, 7 и 9 (правой половины регистра - с 0-го по 15-ый бит), то это расценивается как то, что нужно включить биты 3, 7 и 9 в регистре ODR. Не затрагивая остальные биты.

Левая половинка  (с 16-го по 31-ый бит) регистра  BSRR делает то же самое что регистр BRR.
источник

s

stD in STM32
Вся эта канитель происходит аппаратно - постоянно проверяются регистры BSRR и BRR на наличие в них единичек. Если единичек нет, то ничего не происходит, если где-то появилась единичка, то тут же "свистать всех на верх" и выполнять операцию над регистром ODR - сбросить или установить какой-то бит/биты.

Как только операция выполнена, регистр BSRR или BRR (в зависимости какой использовался) обнуляется и ждёт когда вы обратитесь к нему снова.
источник

s

stD in STM32
В общем регистры BSRR и BRR очень клёвая аппаратная штуковина.

Фух, надеюсь доступно объяснил.
источник

YL

Yury Lyushnevsky in STM32
stD
В общем регистры BSRR и BRR очень клёвая аппаратная штуковина.

Фух, надеюсь доступно объяснил.
Вполне доступно! Даже дети поймут! Спасибо!
источник

T

Triangle in STM32
Yury Lyushnevsky
Вполне доступно! Даже дети поймут! Спасибо!
Дети поняли, спасибо.
источник

ЯМ

Яков Мироничев in STM32
stD
В общем регистры BSRR и BRR очень клёвая аппаратная штуковина.

Фух, надеюсь доступно объяснил.
Доступно, жги ещё
источник

IB

ILYA BILL in STM32
источник

IB

ILYA BILL in STM32
Привет всем! Подскажите пожалуйста:
Кейл перестал компилировать все программы, пробовал заново устанавливать, и менять настройки, ничего не помогает, выдает ошибку
источник

А

Александр in STM32
Здравствуйте  кто работал с stm и nextion  ,скиньте пожалуйста  примеры вывода  текста  на дисплей , работа с sd , внешней eeprom и энкодером
источник