|
Модераторы: PILOT, ManiaK, Mazzi |
|
supercelt |
|
|||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Здравствуйте.
Есть порт В микроконтроллера stm32 Я задействую 5,6,7,8 пины. Остальные служат под другие нужды. В цикле for надо на 5 пин подать 1, а при следующем заходе в цикл - сдвигать ее влево. Получится, что цикл проворачивается и каждый раз нужно ставить 1 с 5 по 8 пин, при этом что бы остальные пины были 0. Можно конечно сделать вот так
Но это быдлокодирование не катит. Затык, не могу сообразить. Я уверен, что программеры с опытом делают это в 1 - 2 строчки. Как? |
|||
|
||||
Mikron |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 50 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) Mikron - 24.7.2016, 17:52 |
|||
|
||||
Курсант |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Эммм.. Простите, не понял проблемы. У Вас есть число, неважно, что там записано в какой пин. Для сдвига Вы просто делаете такую операцию:
Это если нужно все остальные биты числа оставить нулевыми. Если нужно оставить биты без изменения, то так
Можно набросать такую функцию:
|
||||||
|
|||||||
baldman88 |
|
||||||
Бывалый Профиль Группа: Участник Сообщений: 210 Регистрация: 18.1.2009 Репутация: 1 Всего: 7 |
Mikron все верно написал. Только "или" перед знаком равенства излишне и можно это все упростить:
Это сообщение отредактировал(а) baldman88 - 25.7.2016, 13:56 |
||||||
|
|||||||
qwerty4 |
|
|||
Диагност (самый настоящий, как Дядя Вова, тоже от верблюда) Профиль Группа: Участник Сообщений: 3 Регистрация: 14.7.2015 Репутация: нет Всего: нет |
Понаплодили тут извращенств
Это сообщение отредактировал(а) qwerty4 - 28.7.2016, 16:58 |
|||
|
||||
Mikron |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 50 Регистрация: 2.5.2007 Репутация: нет Всего: нет |
Все же рекомендуется регистр BSRR как я понимаю |
||||
|
|||||
supercelt |
|
|||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Да, рекомендуют работать именно с BSRR и BRR
Это сообщение отредактировал(а) supercelt - 28.7.2016, 18:51 |
|||
|
||||
qwerty4 |
|
|||
Диагност (самый настоящий, как Дядя Вова, тоже от верблюда) Профиль Группа: Участник Сообщений: 3 Регистрация: 14.7.2015 Репутация: нет Всего: нет |
Странные вы оба. Слышу звон, да не знаю где он. Перевожу на русский язык это ваше "рекомендуется": Если не хотите заморачиваться с обеспечением атомарности чтения с последующей записью, то можете использовать регистр B(S)RR. Если нет требований (как в исходном вопросе) к атомарности, то можете не использовать. |
|||
|
||||
supercelt |
|
||||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Голова уже кипит. Поделитесь пож опытом. Почему вот так работает
А вот так не работает
Я хочу через BSRR, а единица не скачет по битам а всё время стоит на последнем 8. Работает только когда использую ODR. Я уверен, что причина как всегда в какой-нибудь фигне. Просто пока у меня мало опыта) |
||||
|
|||||
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |