Я CubeIDE пользуюсь редко, но с каких пор Куб стал компилировать код? Генерировать проект, который потом компилируется, например, Keil, это одно, но сразу компилировать Си-шный код CubeIDE давно научился?
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
Заголовок сообщения: Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла
Добавлено: Ср апр 23, 2025 11:32:54
Опытный кот
Зарегистрирован: Вс мар 23, 2025 14:56:55 Сообщений: 700
Рейтинг сообщения:0
smacorp, вроде да: "STM32CubeIDE is an advanced C/C++ development platform with peripheral configuration, code generation, code compilation, and debug features for STM32" (тоже редко пользовался и давно)
С Volatile вчера не помогло. Но может сегодня поможет? Бывает у Cube IDE такой загон, иногда он bin файл не перезаписывает или собирает по предыдущему коду, а я этого не заметил, приговорил Volatile, и продолжил отлаживать костыль printf... Да, так и вышло - Cube настолько "умный", что пока не внесешь значительные изменения в код, он может не пересобраться. Не раз с утра такое замечал - куб запустил, код собрал, а бинарник остался вчерашний
Что-то не верится мне в это. Не знаю ни одной среды разработки с таким поведением.
Как уже говорил выше, лучше бы начать с азов, с изучения двоичной алгебры, языка, потом инструмента... ничего хорошего из того, как Вы делаете сейчас, не выйдет, поверьте. Даже если получится работающая программа, в итоге останется крайне неправильный опыт.
Уж который раз наш мучитель страйкболистов пишет про какой-то 'Volatile'. Кто-нить знает - что это такое? Может все здесь думают, что он имеет в виду 'volatile', а он на самом деле в коде пишет 'Volatile'. Который где-нить в его хидерах (откуда-то скачанных) определён как:
Согласен полностью. Автору нужно брать учебник и садиться за учёбу. Рано ему ещё программы писать....
Говорить: "Загляни в дизассемблер кода или в листинг - и сразу поймёшь, что не так с переменными и как они в реале работают" - вообще не имеет смысла. Всё равно, что слепому говорить "Оцени красоту заката".
Есть вопрос по отладке. Тренируюсь на STM32F407G-DISC1. Сейчас пытаюсь запустить АЦП с DMA. Если запускать программу в режиме отладки, напряжение показывает правильно. Если выйти из отладки и нажать кратковременно Ресет , отображаемое напряжение на 15% меньше, но измерение работает. Если выключить и включить питание(или подержать Ресет более сек.)- половина напряжения и на его изменение не реагирует. Ну да ладно с измерениями( программа написана не правильно), но в чем тогда смысл отладки?
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Отладка отладке рознь. Если речь за статичную/пошаговую, то она лишь для проверки правильности вашей математики алгоритмов и, возможно, проверки правильности настройки оборудования по вычитке его статусов. А есть динамическая отладка, которая чаще в режиме реального времени и аппаратный отладчик а так же режим отладки в IDE никакого к ней отношения не имеют. Нарушение таймингов - частая ошибка новичков при работе с реальным железом.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
lubitel5, задавать вопросы о коде без самого кода бессмысленно. Поделитесь хотя бы фрагментом своего кода. Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Отладка отладке рознь. Если речь за статичную/пошаговую, то она лишь для проверки правильности вашей математики алгоритмов и, возможно, проверки правильности настройки оборудования по вычитке его статусов. А есть динамическая отладка, которая чаще в режиме реального времени и аппаратный отладчик а так же режим отладки в IDE никакого к ней отношения не имеют. Нарушение таймингов - частая ошибка новичков при работе с реальным железом.
Да, статичная/пошаговая. Динамическую, скорее всего, уже не осилю.
lubitel5, задавать вопросы о коде без самого кода бессмысленно. Поделитесь хотя бы фрагментом своего кода. Можете попробовать сделать невозможное? Часто одна строчка или отсутствие настройки ставят исполнение в невозможные ситуации.
Да, статичная/пошаговая. Динамическую, скорее всего, уже не осилю.
А придётся, увы. Таков путь.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
Физическое подключение аналогового домена контроллера выполнено согласно букваря?
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 июля 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
Часть схемы такая, но получается дело не в ней. Наверное я не правильно пользуюсь CubeMX.IDE. Сначала я настраивал IN_11. потом VREFIN, по факту менял только Sampling Time с 3 на 28 и проверял через стат. отладку. Сейчас сделал так: сначала поставил поставил галку на IN_11, потом снял с VREFIN (Sampling Time в настройках сохраняется)- не работает IN_11. Потом снял галку с IN_11 и поставил на VREFIN (Sampling Time сбросилось по умолчанию), выставил Sampling Time=28, сгенерировал- заработало. Похожее было и с непрерывным режимом АЦП: после генерации на Single-channel, single conversion mode, а потом на Single-channel continuous conversion mode, последний у меня не работал. Возможно нужно перед изменением сбрасывать настройки, не знаю. Но вот когда работает в реалии, при пошаговой настройке не выходит из while(), только через Run.
После внесения изменений нажмите "сохранить все", а затем сгенерируйте код (прописав свой код только в указанных местах). Таким образом, код будет под контролем.
Иногда также запускаю очистку, а затем делает и компиляцию. В меню есть опция.
Не знаю, может и не корректный вопрос, но... Пытаюсь хоть немного разобраться с прерываниями и интересует: вот такая реализация обработки данных по прерыванию правильная или нет?
ADC1->SQR1 =0; // 1 регулярный канал ADC1->SQR3 =11; // 1 преобразование - канал 0 ADC1->SMPR1 |= ADC_SMPR1_SMP11_1; // Установка sample time 28 для канала 11 ADC1->CR2 |= ADC_CR2_DMA; // разрешение DMA ADC1->CR1 &= ~ADC_CR1_SCAN; // запрет режима сканирования ADC1->CR2 &= ~ADC_CR2_EOCS; // сбрасываем этот бит, сгенерирован Кубом и не работает непрерывный режим ADC1->CR2 |= ADC_CR2_CONT; // разрешить непрерывный режим ADC1->CR2 |= ADC_CR2_ADON; // разрешить АЦП
DMA2_Stream0->PAR = (uint32_t) &ADC1->DR; // указываем откуда брать данные DMA2_Stream0->NDTR = 256; // количество данных которые пишем DMA2_Stream0->M0AR = (uint32_t) ADC_sum; // указываем куда ложить данные DMA2_Stream0->CR |= (1 << 13); // размер данных памяти DMA2_Stream0->CR |= (1 << 11); // размер данных перефирии DMA2_Stream0->CR |= (1 << DMA_SxCR_CIRC_Pos); // circular DMA2_Stream0->CR |= (1 << DMA_SxCR_MINC_Pos); // инкремируем адрес памяти для передачи данных DMA2_Stream0->CR |= (1 << DMA_SxCR_TCIE_Pos); // разрешаем прерывание по завершению передачи данных
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения