Easyelectronics.ru

Электроника для всех
Текущее время: 28 сен 2020, 04:52

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: различие gpio_write и gpio_setbits
СообщениеДобавлено: 20 май 2012, 16:31 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 01 май 2012, 19:02
Сообщения: 74
Объясните пожалуйста в чём разница между

Код:
GPIO_SetBits() / GPIO_ResetBist()


и

Код:
GPIO_Write()


я понимаю что пишет в разные регистры, но чем они отличаются? в каких случаях какой функцие лучше пользоваться?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: различие gpio_write и gpio_setbits
СообщениеДобавлено: 20 май 2012, 16:39 
Супермодератор
Аватара пользователя

Зарегистрирован: 23 апр 2010, 12:58
Сообщения: 5893
Откуда: Москва/Саратов
А открыть и посмотреть что внутри? :)

_________________
http://d.64h.me/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: различие gpio_write и gpio_setbits
СообщениеДобавлено: 20 май 2012, 16:40 
Супермодератор
Аватара пользователя

Зарегистрирован: 23 апр 2010, 12:58
Сообщения: 5893
Откуда: Москва/Саратов
Первые должны устанавливать и сбрасывать биты по маске
А вторая полностью переписывать регистр порта\

Но регистр при этом один

_________________
http://d.64h.me/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: различие gpio_write и gpio_setbits
СообщениеДобавлено: 20 май 2012, 17:58 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
допустим тебе надо сбросить первый бит в порту. Именно сбросить.
Можно сделать
GPIO_ResetBist(GPIOA, Pin_1);
функция выполнится в одну комманду (посмотри в исходниках).
Функцией GPIO_Write() такого не сделаешь так просто. Она может только переписать весь порт полностью. Правда тоже делает это всего за одну комману. Но не думай что эта фунция хуже или типа того. Эта комманда может использоваться для параллельных шин и прочего.
Есть также еще функция
Код:
void GPIO_WriteBit  ( GPIO_TypeDef *  GPIOx, uint16_t  GPIO_Pin,  BitAction  BitVal) 

это практически тоже самое, что и твои первые две. Отличие ее в том, что у нее есть дополнительный параметр, в котором ты указываешь что ты хочешь делать с битом, в то время как функция GPIO_ResetBist() может только сбросить его.
void GPIO_WriteBit чуть более затратна, ибо у нее есть дополнительный параметр, и внутри проверяется условие. ПОэтому, если возможно, то лучше юзать РезетБит и СетБит.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 


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


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

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


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

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

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