|
x0rOS
|
|
STM32 Алгоритм20.03.2013, 18:48. Показов 14353. Ответов 26
Метки нет (Все метки)
Привет.
Суть: имеется бесконечный цикл в котором непрерывно выполняется Задача1. По прерыванию(от нажатия кнопки) в бесконечном цикле должна выполняться Задача2. При следующем нажатии - снова запуск Задачи1 и т.д. В основном цикле не должно быть проверок - какой режим включен. (т.е. менять флажки в прерывании не подходит) Пока остановился на двух вариантах решения: 1. Каждый раз переписывать тело цикла. Очевидно, не самое рациональное решение и насколько я понимаю, трудно осуществимо в микроконтроллерах. 2. Создать две функции с циклами для Задачи1 и Задачи2. И по прерыванию завершать одну функцию и вызывать другую. Но проблема в том, как именно это осуществить. Точнее, не понятно как завершать предыдущую функцию из прерывания. А если не завершать то в стеке будет копиться мусор и ничем хорошим это не закончится. ----- Контроллер STM32, Си. Спасибо! |
|
| 20.03.2013, 18:48 | |
|
Ответы с готовыми решениями:
26
Чем связать STM32 + STM32 в одном корпусе? Общение с барометром MS5540 на STM32 (Arduino to STM32) stm32 + FSMC + stm32 |
|
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 140
|
||
| 20.03.2013, 23:43 | ||
Указатель стека мы установим на начало, т.е. что было до того в стеке - по барабану. Даже если в памяти останется мусор, то нам он до фонаря, потому что он затрется нужной информацией. Кажется не очень хорошо объяснил. Хотя вариант этот достаточно шизанутый и я бы не стал так делать никогда, но, возможно, в данном случае он будет вполне уместен, но это Вам видней. Кстати еще идея. Формируем в верхушке стека dw с указателем, который Вы будете менять в прерывании, после этого на этот адрес интим укаатель стека и делаем ret.
0
|
||
|
x0rOS
|
|
| 20.03.2013, 23:48 | |
|
kysoft, понял. Отличная идея. Только глобальные переменные умрут( А мне глобальный указатель нужен на буфер ктороый я обрабатываю в свой задаче. Этот указатель у меня отрабатывается когда я уже в прерывании по таймеру.
Посмотрим, что можно придумать, но идея хорошая. >Кстати еще идея. >Формируем в верхушке стека dw с указателем, который Вы будете менять в прерывании, после этого на этот адрес интим укаатель стека и делаем ret. Гениально. Выйдем сразу за циклом и конкретно завершим функцию. А теперь вопрос, как это сделать в Сях?=) ---- PS пока остановился на автомате, когда очень подгорит займусь оптимизацией. Интеллектуальный онанизм иногда тоже полезен=) |
|
|
0 / 0 / 0
Регистрация: 13.01.2013
Сообщений: 140
|
||
| 21.03.2013, 00:00 | ||
Переменные умрут, если они в стеке, а если в фиксированной области памяти, то куда они денутся. Хотя, кажется я понял, о каких переменных речь. Тогда еще идея, в прерывании сохранять нужные регистры в определенную область памяти, а нужные переменные держать в регистрах. Для каждой задачи отвести свою область памяти, в которой и держать сохраненные регистры. В данной задаче большой плюс в том, что МК не обременен ОС или еще какой другой "нагрузкой", потому крутить стеком можно как угодно. Только всё это достаточно жестко программировать и область применения достаточно узкая, но.. А еще можно попробовать совместить ассемблер с С, задачи на С, а эта монстрятина на ассемблере.
0
|
||
|
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
|
||
| 21.03.2013, 21:28 | ||
0
|
||
|
x0rOS
|
|
| 22.03.2013, 04:32 | |
|
Дайте пожалуйста прямую ссылку.
|
|
|
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
|
|
| 23.03.2013, 12:09 | |
|
Про многозадачность в разделе многозадачность, а про объекты в разделе объекты. Писал для ОС, для задач обработки в реальном времени нужно в самих прерываниях команды делать, так быстрее будет и вернее, например управление моторчиками.
0
|
|
| 23.03.2013, 12:09 | |
|
STM32 - STM32 I2C Алгоритм ГОСТ ( простой) для STM32 Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|