Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2019, 05:57

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 13 авг 2019, 13:12 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6157
"GPIOA->BSRR |=1<<0"
Не правильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 13 авг 2019, 13:46 
Старожил
Аватара пользователя

Зарегистрирован: 12 июн 2018, 15:04
Сообщения: 350
Топик-стартеру уже кучу идей подкинули, а бурление говн не проходит. Вообще странно это, ну не нравится запись через порты, сделай через макросы или перегрузку операторов. В чём прикол? На ассемблере и в машинных кодах будет всё тоже самое.

Чем-то напомнило передачу в 90-х для детей - как из говна и палок делали что-то разными путями:

https://www.youtube.com/watch?v=pHIICndD1OY

P.S. надеюсь, я не один в мире, кто помнит эту обдолбанную передачу ? ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 13 авг 2019, 23:02 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 677
Доброго времени суток !

Ну, по заявкам телезрителей можно и по универсальней !
Код:
#define _SETB(p,b)   GPIO##p->BSRR = (1 << b)
#define _CLRB(p,b)   GPIO##p->BSRR = (1 << (b+16))

// Использовать
_SETB(A,1);
_CLRB(A,1);

Ну и универсальный вариант
Код:
#define _SCB_(p,b,e)    GPIO##p->BSRR = (1 << (b + ((e)?0:16)))

// Использовать
_SCB_(B,2,1);  // В порту B установить 2-й бит
_SCB_(B,2,0);  // В порту B сбросить 2-й бит

Как-то так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 14 авг 2019, 00:35 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6157
void1509 писал(а):
Код:
#define _SETB(p,b)   GPIO##p->BSRR = (1 << b)
#define _CLRB(p,b)   GPIO##p->BSRR = (1 << (b+16))

Как-то так.


Ай.
Кроме BSRR есть еще BRR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 14 авг 2019, 00:55 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1009
u37 писал(а):
Кроме BSRR есть еще BRR.

BRR есть не везде, как минимум у F4 нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 14 авг 2019, 01:07 
Старожил

Зарегистрирован: 17 дек 2014, 04:38
Сообщения: 677
u37 писал(а):
Ай.
Кроме BSRR есть еще BRR.

Там еще много регистров есть, и что ? В данном контексте это к чему ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Маленький вопросик про порты.
СообщениеДобавлено: 14 авг 2019, 09:49 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1090
    BSRR - Bit Set Reset Register
    32 - битный регистр сброса и установок, 0..15 бит - установка, 16..31 - сброс.

void1509
Это черт побери интересная схема, я сам не додумался :) что можно так использовать и смещать на 16 бит - возьму на вооружение.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB