реклама на сайте
подробности

 
 
> объясните логику дефайна
Метценгерштейн
сообщение Jan 3 2013, 14:53
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



#define GPIO_OSPEEDER_OSPEEDR0 ((uint32_t)0x00000003)
#define GPIO_OSPEEDER_OSPEEDR0_0 ((uint32_t)0x00000001)
#define GPIO_OSPEEDER_OSPEEDR0_1 ((uint32_t)0x00000002)

текст
00: 400 kHz Very low speed
01: 2 MHz Low speed
10: 10 MHz Medium speed
11: 40 MHz High speed on 50 pF (50 MHz output max speed on 30 pF)

и так по всему файлу они дефайнят.
т.е., допустим, я в нулевом пине хочу выставить скорость 2 Мгц.
почему по их логике это режим ...OSPEEDR0_0 ?
Получается, мне надо все время в голове держать, что
_OSPEEDR0 - это bin 11
_OSPEEDR0_0 bin 01
_OSPEEDR0_1 bin 10
?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Jan 3 2013, 17:17
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



а если я на др cortex перенесу проект? не STM например.
какой стиль программирования легче будет адаптировать?

И как на скорости сказывается дополнительный вызов ф-ий и прочего при использовании StdPerifLib?
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Jan 3 2013, 21:14
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



Цитата(Метценгерштейн @ Jan 3 2013, 20:17) *
а если я на др cortex перенесу проект? не STM например.
какой стиль программирования легче будет адаптировать?

И как на скорости сказывается дополнительный вызов ф-ий и прочего при использовании StdPerifLib?

У NXP, например, аналогичным образом сделана настройка периферии. На мой взгляд такой код читается лучше, а следовательно и портируется легче чем напрямую запись в регистры, которые ещё надо смотреть в даташите что означают и какие битики туда надо писать.
А насчёт скорости смотрите сами. Если это делается 1 раз при старте девайса, то уж лишние пару наносекунд инициализации устройтсва не сильно огорчат пользователя. Посмотрте дизассемблер что Ваш компилятор генерируется, посчитайте кол-во тактов и прикиньте подходит это под заданные нужды или нет.
Например, для NXP функцию GPIO_ReadValue из фирменной библиотеки gcc с -O1 компилит менее 20 инструкций (точно не помню сейчас) что на 100МГц для M3 примерно 200нс. Можно точно посчитать и измерить если критчино. Мне не было критично sm.gif


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016