|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
Прерывания в стиле С++06.12.2018, 15:08. Показов 1933. Ответов 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 О стиле программирования Алгоритм в стиле с++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|