-
- Начал разбираться с GPIO, ничего не понял. А когда почитал даташит, все биты в регистрах понятны. - Леонид Иванович(06.11.2013 23:46)
- GPIO - просто песня, можно в стиле in и out, можно (и нужно) GPIO_BSRR_BR1 и GPIO_BRR_BR1. Когда почувствуете, ещё будете удивляться как Вы жили без BSRR и BRR - _keil(07.11.2013 00:14)
- А в чем смысл BRR, если BSRR может как устанавливать, так и сбрасывать? - Леонид Иванович(07.11.2013 01:08)
- на СМ3 и СМ4 можно через bit bang, это ещё лучше koyodza(196 знак., 07.11.2013 00:27)
- Не на всех CM3/4 это работает. STM32F3, например. - AD(07.11.2013 14:25)
- само собой. Тут речь про F1 - koyodza(07.11.2013 14:29)
- А чем лучше через bit bang? - Леонид Иванович(07.11.2013 01:09)
- вместо записи маски используется запись по адресу. Удобнее, если пины могут быть переконфигурированы в процессе работы программы: просто храните указатель на 32-битное слово, которое отвечает за состояние отдельного пина koyodza(283 знак., 07.11.2013 01:18)
- Альтернатива -
макросinline-функция#define - если решили назначить сигнал другому пину, просто указали новую маску в тот же или другой порт - _keil(07.11.2013 09:02)- Вы не поняли: у Вас адрес порта и маска (два параметра), у меня один адрес. Пока всё задано define большой разницы нет (хотя на самом деле небольшая разница есть в получаемом коде), но когда Вам понадобится в процессе работы программы koyodza(282 знак., 07.11.2013 14:05 - 14:08)
- Я делаю шаблонный класс, где параметрами будут порт и пин. - Леонид Иванович(07.11.2013 12:40)
- Рабочий вариант, но call и ret требуют ненулевого cpu time. Как минимум push/pop. Может случиться что эта задержка ограничит желаемую скорость ногодрыганья. Дело Ваше, я предпочту #define set GPIOB->BSRR=GPIO_BSRR_BR1; #define reset GPIOB->BRR _keil(115 знак., 07.11.2013 13:13)
- Какие call и ret? Функции, определённые в теле класса инлайнятся без каких-либо накладных расходов. - =AlexD=(08.11.2013 11:40)
- Рабочий вариант, но call и ret требуют ненулевого cpu time. Как минимум push/pop. Может случиться что эта задержка ограничит желаемую скорость ногодрыганья. Дело Ваше, я предпочту #define set GPIOB->BSRR=GPIO_BSRR_BR1; #define reset GPIOB->BRR _keil(115 знак., 07.11.2013 13:13)
- Альтернатива -
- вместо записи маски используется запись по адресу. Удобнее, если пины могут быть переконфигурированы в процессе работы программы: просто храните указатель на 32-битное слово, которое отвечает за состояние отдельного пина koyodza(283 знак., 07.11.2013 01:18)
- Не на всех CM3/4 это работает. STM32F3, например. - AD(07.11.2013 14:25)
- это GPIO, дальше будет наоборот :=) - koyodza(06.11.2013 23:48)
- GPIO - просто песня, можно в стиле in и out, можно (и нужно) GPIO_BSRR_BR1 и GPIO_BRR_BR1. Когда почувствуете, ещё будете удивляться как Вы жили без BSRR и BRR - _keil(07.11.2013 00:14)
- Начал разбираться с GPIO, ничего не понял. А когда почитал даташит, все биты в регистрах понятны. - Леонид Иванович(06.11.2013 23:46)