|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
Прерывания в стиле С++06.12.2018, 15:08. Показов 2016. Ответов 31
Метки нет (Все метки)
Решил побаловаться и попробовать написать чего-нибудь на С++ под stm32. Чисто ради любопытства, накорябал класс Led (хотя наверное можно было накидать класс Output, а от него наследоваться =)).
типа того Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Так вот, прикольно, и мне понравилось. Все работает. Но возник вопрос, как например поморгать светодиодом в обработчике прерываний? Если мы объявим объекты в main их будет не видно в обработчиках. Будучи явно уверенным, что глобально объект объявить нельзя, сделал так:
Может кто уже с этим разбирался, подскажите как правильно, и чем черевата такая писанина?
0
|
||||||||||||||||
| 06.12.2018, 15:08 | |
|
Ответы с готовыми решениями:
31
C++ в функциональном стиле: как писать в стиле C#/LINQ (без дополнительных библиотек)? [Вопрос] Перехват прерывания прямым доступом к вектору прерывания Вычислить адрес вектора прерывания по номеру прерывания. |
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||
| 15.12.2018, 23:01 | ||||
|
Не по теме: :). ну ок, вообще-то это вы слишком далеко их разнесли. И то и то имеет право на жизнь, так что вполне нормально сравнивать то, где существует обсужденная фича.
0
|
||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 15.12.2018, 23:18 [ТС] | |
|
Void1509, это все конечно приятно и лампово один светодиод один пин один порт. Я тоже так думал когда писал первый проект. Потом светодиодов стало 20 в том же проекте. Потом эти светодиоды перекинули совсем на другие пины. И так далее. Если бы всегда было все статично то вопросов бы не было. А так мне надо одну структуру переопределить и все. А можно и на ходу переделать структуру через интерфейс какой нибудь и сохранить в епроме
0
|
|
|
5 / 5 / 0
Регистрация: 17.09.2018
Сообщений: 43
|
|
| 15.12.2018, 23:38 | |
|
Боюсь в проблеме которую вы описали - С++ бессилен. Это проблема чисто организационного порядка и никакими средами программирования к сожалению не решается. Заказчик, если его не ставить в рамки договором и техзаданием, имеет неограниченный ассортимент всяческих хотелок и учесть их все просто не возможно.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 16.12.2018, 00:01 [ТС] | |
|
Void1509, борьба и идет за упрощение своей работы
0
|
|
|
5 / 5 / 0
Регистрация: 17.09.2018
Сообщений: 43
|
|
| 16.12.2018, 00:10 | |
|
Как видите, простота есть критерия субъективная. Вам проще через класс описать, мне - дефайном. Но мой способ не генерирует лишний код.
Добавлено через 5 минут Аж любопытно стало - глянуть на проект на С++. На каком уровне происходит вызов конструкторов в коде ТСа ? На уровне инициализации секции .init ?
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 16.12.2018, 00:10 [ТС] | |
|
Void1509, но ваш способ не позволяет поменять пин на ходу. не меняя прошивки.
А вообще изначальный вопрос исчерпан. Уже не по теме обсуждение.
0
|
|
|
5 / 5 / 0
Регистрация: 17.09.2018
Сообщений: 43
|
||
| 16.12.2018, 00:14 | ||
|
Добавлено через 1 минуту Если не секрет, как решили изначальный вопрос ?
0
|
||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 16.12.2018, 00:17 [ТС] | |
|
Void1509, в смысле а в чем вопрос? Вопрос решился вызовом конструкторов до main. И обрамлением обработчиков прерываний в extern "C". Это был опыт не более. У меня пока слишком ного библиотек написано а Си, чтобы я резко перешел на С++. Но некие удобства для себя я уже определил
0
|
|
|
5 / 5 / 0
Регистрация: 17.09.2018
Сообщений: 43
|
||||||
| 16.12.2018, 00:23 | ||||||
|
Вот ваш код в начале топика
0
|
||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 16.12.2018, 00:28 [ТС] | |
|
1
|
|
|
5 / 5 / 0
Регистрация: 17.09.2018
Сообщений: 43
|
|
| 16.12.2018, 00:32 | |
|
Благодарю, понял, Вы инициализацию вынесли из конструктора.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 16.12.2018, 00:33 [ТС] | |
|
Void1509, для определния пинов и номера интерфейса тактирование особо не важно, и можно их вызвать до настройки системы тактирования, а вот проинициализировать можно и в main. Обычно в работе, точнее при изменениях в проекте перекидываются интерфейсы с одного на другой, дальнейшая их работа остается такой же
0
|
|
| 16.12.2018, 00:33 | |
|
Вызов прерывания в обработке прерывания макропроцессор в стиле с ToolBar в стиле XP О стиле программирования Алгоритм в стиле с++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|