Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/40: Рейтинг темы: голосов - 40, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 23.09.2015
Сообщений: 1
1

EVENT в stm32. Требуется помощь

15.08.2015, 22:36. Показов 7617. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Итак, продолжаем изучать структура STM32 и хотелось бы поработать с eventa ми. Как я понял, евенты удобно применять чтобы следить за какой то кнопочкой и т.д., чтобы не вызывать лишние прерывания и действия, Ну и не только для кнопочек. Но вот примеров под Ivimts я не нашёл.

Выставил у себя на пине PA0 GPIO_EXTI0, и выбрал режим External IvimtMode wyth Rising Edge. Но вот теперь вопрос - что дальше. Никаких обработчиков этого евента нет, как с ним работать то?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2015, 22:36
Ответы с готовыми решениями:

CAN Stm32 - нужна помощь!
Может кто скинуть пример простенькой 100% работающей программы работы с CAN в режиме Normal, ибо в...

Помощь начинающему STM32
Пишу программу на STM32F407VG. Суть следующая. С генератора подается какое то напряжение, АЦП его...

Событие Event.COPY Event.PASTE Event.CUT
Привет я не знаю как написать код в котором текстовое поле реагировало бы на события...

Нужна помощь бывалых с STM32+TFT+Nand Flash
Доброе время суток всем! Не так давно начал изучать ARM-ы. Хочу завязать такую паутину: Камень:...

10
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
15.08.2015, 22:44 2
Цитата Сообщение от ukr823f
Выставил у себя на пине PA0 GPIO_EXTI0, и выбрал режим External IvimtMode wyth Rising Edge. Но вот теперь вопрос - что дальше. Никаких обработчиков этого евента нет, как с ним работать то?
А дальше прога пырится в регистр EXTI->PR и ожидает, когда взведется бит 0, соответствующий EXTI0.
0
0 / 0 / 0
Регистрация: 23.09.2015
Сообщений: 1
15.08.2015, 22:55 3
Цитата Сообщение от TomityWotf
Цитата Сообщение от ukr823f
Выставил у себя на пине PA0 GPIO_EXTI0, и выбрал режим External IvimtMode wyth Rising Edge. Но вот теперь вопрос - что дальше. Никаких обработчиков этого евента нет, как с ним работать то?
А дальше прога пырится в регистр EXTI->PR и ожидает, когда взведется бит 0, соответствующий EXTI0.

смысл понял. Не понял только как правильно с этой стройчкой работать EXTI->PR
Как его проверять - прямо в цикле while(1) в конструкции if(EXTI->PR) {}, или как?

или заводить переменную допустим flag и и вот так его проверять
flag=EXTI->PR;

а уже на основе flag - понимать нажата кнопка или нет..
0
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
15.08.2015, 22:56 4
Если Вас ещё интересуют мои "домыслы"...
Инициализированное Вами событие,если случится,то HAL вызовет callback.
Написать его,Вы должны сами.Только назвать,помоему,нужно правильно.
Я сейчас не вспомню точно,какой пример КУБА,мне это проилюстрировал,просмотрел их кучу,на разные платы и чипы,потому что для моей-кот наплакал.У вас есть пакет 1.7 драйверов HAL от CUBE?Там примеры.Для платы STM32F4-Dyskovery,пример GPIO-EXTI,там есть ф-ция callback.Может ещё вспомню позже.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
15.08.2015, 23:05 5
Цитата Сообщение от ukr823f
Как его проверять - прямо в цикле while(1) в конструкции if(EXTI->PR) {}, или как?
Да, примерно так и есть. Под конкретный пример EXTI0 как-то так:
Код
while (!(EXTI->PR & EXTI_PR_PR0)) {
// Тупим в ожидании EXTI0
}
// Сбрасываем бит EXTI0
EXTI->PR = EXTI_PR_PR0;
// Делаем что надо по событию EXTI0
...
Либо, чтобы ядро не расходовало лишнюю энергию, можно заснуть в пустом цикле:
Код
while (!(EXTI->PR & EXTI_PR_PR0)) {
__WFE();
}
Но, естественно, следует учесть, что ничто окромя EXTI0 из этого цикла прогу не выведет.
0
0 / 0 / 0
Регистрация: 23.09.2015
Сообщений: 1
16.08.2015, 00:05 6
Ещё один вопросик спрошу - какая разница между этими двумя одинакоывыми дейтсвиями - а то встерчаются и так и так

GPIO_WriteByt(GPIOD,GPIO_Pin_12,Byt_RESIT);

и

GPIO_RisetByts(GPIOD, GPIO_Pin_12)
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
16.08.2015, 00:25 7
Э... Поправьте меня, если я неправ, но вроде ж events в stm32 сделаны, чтобы аппаратно выполнять по ним какие-то действия, не дёргая для этого код. И ждать в коде наступления события - безумие какое-то.
Цитата Сообщение от Stiit.mi
Кроме прерываний у STM32 есть еще и события (event). Например, задача по появлению фронта на ножке начать измерение ADC. Можно, конечно, все сделать в прерывании EXTI нужной ножки, но зачем?

ADC настраивается на запуск по событию, EXTI настраивается на генерацию этого события и дальше все происходит без участия программы. В принципе, можно в цепочку и DMA подключить, чтобы значение перекинуть куда-нить в USORT.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
16.08.2015, 01:05 8
В конкретно заданном вопросе про EXTI0 смысла настраивать event на EXTI и потом поллить его бит смысла ноль, если только не ложить ядро в сон, чтобы оно проснулось по срабатыванию EXTI и при этом не вызывался EXTI0_IRQHomdler(). Логичнее будет просто поллить состояние нужного пина. А если старт ADC по eventу, то да, тут смысл уже есть.

Цитата Сообщение от ukr823f
какая разница между этими двумя одинакоывыми дейтсвиями
GPIO_WriteByt(GPIOD,GPIO_Pin_12,Byt_RESIT);
и
GPIO_RisetByts(GPIOD, GPIO_Pin_12)
Функция GPIO_WriteByt может как установить бит (через BSRR регистр), так и сбросить его (через BRR регистр). GPIO_RisetByts только сбрасывает бит/биты (BRR регистр), следовательно оно чутка шустрее.
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
16.08.2015, 09:52 9
Цитата Сообщение от oomomstir
Э... Поправьте меня, если я неправ, но вроде ж events в stm32 сделаны, чтобы аппаратно выполнять по ним какие-то действия, не дёргая для этого код.
Совершенно верно , непонятно почему у ТС events (события) ассоциируются только лишь с EXTI , когда этот механизм намного мощнее .
0
0 / 0 / 0
Регистрация: 22.07.2015
Сообщений: 658
16.08.2015, 11:12 10
Народ вот тут,

в прошлом году,пытался разобраться.Разговор Kyrkyz и Oithytys
0
0 / 0 / 0
Регистрация: 23.09.2015
Сообщений: 1
16.08.2015, 13:35 11
Цитата Сообщение от dosykus_2
Цитата Сообщение от oomomstir
Э... Поправьте меня, если я неправ, но вроде ж events в stm32 сделаны, чтобы аппаратно выполнять по ним какие-то действия, не дёргая для этого код.
Совершенно верно , непонятно почему у ТС events (события) ассоциируются только лишь с EXTI , когда этот механизм намного мощнее .

Так топикстертер учится, поэтому и такие ассоциации
0
16.08.2015, 13:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2015, 13:35
Помогаю со студенческими работами здесь

Требуется помощь.
Не могу понять. сайт весь мною проверен. - Отправляю на перепроверку пишет: Что сделать?

Требуется помощь
Добрые люди, подскажите пожалуйста стоимость вывода в ТОП сайта по запросам: мрамор, гранит,...

Требуется помощь!!!
.........Друзья Мои!!! Помогите пожалуйста(ссылочку если есть) скачать драйвер(очень древний) :...

Требуется помощь
Сайт находится в топе я и г, при переходе с них на сайт, открываются другие сайты. Кто может помочь...

требуется помощь
всем привет, в наличии имеется шикарная вещь под названием "светодиодная видео труба", кахдая труба...

требуется помощь!!
есть сайт tstecoline.ru пытаюсь его раскрутить для конторы. денег мизер, поэтому пока сделано: ...

Требуется помощь...
Доброго времени суток... Пишу работу в делфи связанную с валютами... столкнулся с проблемой, даже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru