STM32 HAL EXTI

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Vadim1984
Родился
Сообщения: 9
Зарегистрирован: Ср ноя 16, 2016 07:04:33
Откуда: Одесса

STM32 HAL EXTI

Сообщение Vadim1984 »

Господа эксперты! Помогите разобраться!
Использую HAL для небольшого проекта, хочу ловить EXTI, столкнулся с тем, что в различных уроках обработчик прописывают по разному, кто b main.c функцией

Код: Выделить всё

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
, кто в stm32f1xx_it.c, причем во втором случае юзеркод мы can воткнуть в два места.

Код: Выделить всё

void EXTI1_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI1_IRQn 0 */

  /* USER CODE END EXTI1_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
  /* USER CODE BEGIN EXTI1_IRQn 1 */

  /* USER CODE END EXTI1_IRQn 1 */
}
Вопрос: Как лучше то!?
Сам искал ответа в гугле, в хол_мануале, по файлам библиотек не понял :cry:
Кто умеет, плиз, накидайте полезных ссылок или пару строк объяснений как это делают опытные кошатники
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 HAL EXTI

Сообщение Мурик »

Vadim1984 писал(а):Вопрос: Как лучше то!?
Лучше отказаться от лишнего слоя абстракции - HAL и писать на регистрах или с использованием SPL. Это проще и оптимальнее.
Реклама
Vadim1984
Родился
Сообщения: 9
Зарегистрирован: Ср ноя 16, 2016 07:04:33
Откуда: Одесса

Re: STM32 HAL EXTI

Сообщение Vadim1984 »

Согласен. Но сейчас хочу разобратсья с Hal
Аватара пользователя
tar
Это не хвост, это антенна
Сообщения: 1363
Зарегистрирован: Ср май 26, 2010 18:53:57

Re: STM32 HAL EXTI

Сообщение tar »

Мурик писал(а): или с использованием SPL
А с каких пор SPL не "слоя абстракции" и чем он внезапно стал лучше чем HAL?
Мурик писал(а): Это проще и оптимальнее.
Это очевидно не проще и очевидно не оптимальнее.
Vadim1984 писал(а):Вопрос: Как лучше то!?
Обычно можно почитать в HAL мануале + вы можете посмотреть определение этих функций.
Лучше сразу учится читать мануалы и все такое, без этого никуда. А потом уже пофиг будет на чем и что и какие камни программить
[AMS]
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 HAL EXTI

Сообщение Мурик »

tar писал(а):чем он внезапно стал лучше чем HAL
Достаточно изучить код библиотек SPL и HAL чтобы понять что в SPL меньше лишних действий. :)
tar писал(а):Это очевидно не проще и очевидно не оптимальнее.
Не проще в том плане что кроме даташита нужно еще изучать документацию на HAL. Не хочется разбираться с регистрами, есть SPL.
В коде HAL библиотеки много лишнего и про оптимальность говорить не нужно. Это все равно что сказать что оптимально ехать из Москвы в Подмосковье через Камчатку. :facepalm:
Реклама
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 HAL EXTI

Сообщение afz »

Если говорить о проектах, собранных из кубиков (STM32CubeMX), то лучше всего вписать в main между /* USER CODE BEGIN Includes */ и /* USER CODE END Includes */ #include для своего хедера, в котором, среди прочего, прописана программа, допустим, void my_main(void); а между /* USER CODE BEGIN 2 */ и /* USER CODE END 2 */ вызов этой программы. Хедер и программу поместить в папки inc и src кубического проекта, после чего забыть обо всём, нагенерированном Кубиком и писать свой код только в этих .h и .c файлах. Достоинства: не надо ковыряться и размещать свой код во множестве нагенерированных файлов, в любой момент можно выкинуть этот проект и собрать из кубиков новый, после чего вписав в кубический main те самые две строчки спокойно подключить всё своё наработанное к новому проекту.

А по существу заданного вопроса, проще всего вписать в тот самый свой .c-файл, в котором, собственно, и пишем свою программу, функцию
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
в которой и обрабатывать EXTI.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
Аватара пользователя
tar
Это не хвост, это антенна
Сообщения: 1363
Зарегистрирован: Ср май 26, 2010 18:53:57

Re: STM32 HAL EXTI

Сообщение tar »

Мурик писал(а):Достаточно изучить код библиотек SPL и HAL чтобы понять что в SPL меньше лишних действий.
Отчасти разве что. По сути они почти одинаковые. HAL просто написан более универсально.
Мурик писал(а):Не проще в том плане что кроме даташита нужно еще изучать документацию на HAL
А что документацию на SPL изучать уже не надо? боже что ты несешь.
Мурик писал(а):Не хочется разбираться с регистрами, есть SPL.
С SPL видимо все разбираются с детства, еще со времен когда учатся шнурки завязывать. :facepalm:
Мурик писал(а):В коде HAL библиотеки много лишнего и про оптимальность говорить не нужно. Это все равно что сказать что оптимально ехать из Москвы в Подмосковье через
Камчатку
Оптимальнее с точки зрения чего? времени? да хрен там. Я проще накидаю в кубе настройки всей периферии чем буду сидеть и колупать регистры.
Проще? Опять же проще указать какие пины как работать должны, указать нужную периферию, мышкой наклацать нужные делители и наглядно видеть результат по частоте.

Итого: не оптимальнее с точки зрения времени и не проще.

Я могу понять, что бы топить за чистый цимис, ладно, возбуждает тебя дротить регистры, и говорить "какой я молодец, вот тут я использую битмаппинг портов и экономлю по 2 операции" это еще можно понять. Но что бы топить за SPL вместо HAL это чем надо думать? HAL поддерживается и развивается, кучу продуктов ST выпускается из расчета автоматизации разработки. Явно перспективнее переложить автоматизацию на плечи разработчика камня и заниматься логикой. Обновления HAL выходят постоянно, дыри и проблемы закрываются и он уже давно работает хорошо.

Если кто то привык пользоваться определенными инструментами это еще не значит что объективно их нужно советовать.
[AMS]
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 HAL EXTI

Сообщение Мурик »

tar писал(а):Оптимальнее с точки зрения чего? времени?
Представьте себе.
Я раньше немного использовал куб и не раз сталкивался с багами и отличиями в зависимости от версии. Было и такое что генерированный проект переставал компилироваться после обновления куба приходилось создавать проект с нуля, все настраивать и переносить код с предыдущего проекта тратя на это время и силы. Так что да, использование SPL сэкономит время. Я в этом на практике убедился.

А еще при необходимости изменить часть кода в файлах где не предусмотрена возможность это сделать (например требовалось внести некоторые изменения в дескрипторы USB) эти изменения затирались при очередном генерировании проекта.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 HAL EXTI

Сообщение afz »

Мурик писал(а):Было и такое что генерированный проект переставал компилироваться после обновления куба приходилось создавать проект с нуля, все настраивать и переносить код с предыдущего проекта тратя на это время и силы.
И не один раз. И мой подход (две строчки в кубическом main(), а все остальное - в своих .c и .h) позволяет сократить перенос кода с предыдущего проекта до минимума. Остается чисто кубическая работа - настроить интерфейсы, назначить ножки и т.п., т.е. то самое, для чего это Кубик, в общем-то, и предназначен.

То же самое весьма полезно и при переходе на другой камень. Я клепаю один проект, начал его на STM32F103VET6, потом без проблем перенес его на STM32F407VET6. Модифицировать текуший проект Кубик не дал, так я, по-простому, нащелкал новый, подключил к нему свои исходники, которые были в проекте с F103, и все. Ну, не считая того, что у 407-го ножками GPIO манипулируют слегка по-другому (часть регистров другие), пришлось подправить. В итоге, я спортил проект со 103-го на 407-й меньше, чем за полдня.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Ответить

Вернуться в «ARM»