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

 
 
> Научите красиво дергать ножками STM32
Atlantis-
сообщение Jul 6 2016, 15:40
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
У меня на плате полно разных сигналов управления от STM32F429. В программе нужно ими всеми манипулировать. Использовать стандартные функции HAL неудобно, при написании программы придется часто отвлекаться на плату, чтобы посмотреть, где ножки реально расположены. Даже если дефайном присвоить имя какому то выводу, непонятно на каком он порте - надо смотреть плату.
Код
HAL_GPIO_WritePin(GPIOA,DAC_RESET,GPIO_PIN_SET);

Коллега оборачивает такие вещи в функции
Код
void gpioDACRESET(void)
{
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
}

Но это тоже не дело. Подскажите, как вы решаете такие проблемы?
Go to the top of the page
 
+Quote Post
3 страниц V  < 1 2 3  
Start new topic
Ответов (30 - 32)
jcxz
сообщение Jul 10 2016, 09:05
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Jul 10 2016, 14:31) *
И этого слишком мало!
Если описывать то всё, включая все альтернативные функции.

Слишком громоздко. Я при описании предполагаю, что у пина есть некоторые дефолтные опции, и в строке описания пишу только отличия от дефолта.
Например:
PINSEL(PIN_DFLASH2_CS, GPIO, 12mA);
От дефолтного отличается только задание повышенного вых. тока. Если например нужен OpenDrain, добавлю в список OD и т.п. Через запятую.
Обязательные у меня только два первых аргумента: номер/порт пина и функция мультиплексора.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 10 2016, 09:50
Сообщение #32


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Jul 10 2016, 12:05) *
Слишком громоздко. Я при описании предполагаю, что у пина есть некоторые дефолтные опции, и в строке описания пишу только отличия от дефолта.
Например:
... Если например нужен OpenDrain, добавлю в список OD и т.п. Через запятую.


Да, но моя то таблица генерится почти автоматически, а вам все 140 с лишним строк надо писать ручками каждый раз тщательно проверяя, а дефолтные ли параметры там. biggrin.gif
Таблица хоть и большая, но гомогенная. Отсюда меньшее количество ошибок.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jul 10 2016, 12:23
Сообщение #33


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(AlexandrY @ Jul 10 2016, 11:31) *
И этого слишком мало!
Если описывать то всё, включая все альтернативные функции.
Тут немного искажено , поскольку включился автоматический перенос строк, но принцип понять можно.
Вы сюда локи и прерывания ещё вынесли - вполне себе... Главное, что читаемо и понятно!

Цитата
И эта таблица генерится прямо из PDF-а мануала на чип.
Вот, а это уже интересно!
Поделитесь механизмом!
Сперва подумал, какой ацкий труд проделан по написанию каментов, а потом увидел, что и это автоматизировано - респект!

Цитата(jcxz @ Jul 10 2016, 10:01) *
Не понял вопрос про задание активного уровня. При инициализации пина ему задаётся некое начальное значение (если это GPIO-пин), а потом меняется драйвером по его алгоритму. Есть у меня макросы установки/сброса/... текущего состояния GPIO-пина. Описывал их выше.
Смысл H и L в макросах не только в задании начального состояния, но и в том чтобы не думать о нём вовсе.
pin_set(PIN_NAME); pin_clr(PIN_NAME); задают состояние ноги напрямую без учёта H и L,
а pin_drive(PIN_NAME, VALUE) задаёт активное/пассивное состояние c учётом активного уровня.
Поэтому в коде программы или коде драйвера я использую только pin_drive(PIN_NAME, VALUE), чтобы не думать о активном уровне. В ваших макросах явно напрашивается третий аргумент: А,12,H или B,5,L


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 07:01
Рейтинг@Mail.ru


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