CUBEIDE глюки или...

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

Доброе время суток всем.
Начал изучать STM32 и столкнулся с такой проблемой.
Установил точку останова(стр 72), но программа останавливается не в той точке а совсем в другом месте (стр 84).
Если удалить if в строке 70 то работает все как надо.
В чем может быть проблема?
Прошу сильно не пинать.
Вложения
Захват.jpg
(60.79 КБ) 127 скачиваний
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Предположение первое: вычисления между строках ничего не меняют, и оптимизатор их удалил. Варианты: удалить оптимизацию компилятора или объявить используемые переменные как volatile.
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

Оптимизация 0.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Мудрый кот
Сообщения: 1731
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="RUNA",url="/forum/viewtopic.php?p=4704510#p4704510"]Начал изучать STM32[/uquote]Прям как Гагарин - 12-го апреля! :) :beer:

[uquote="RUNA",url="/forum/viewtopic.php?p=4704525#p4704525"]Оптимизация 0.[/uquote]Тогда - какое-то нарушение связывания между скомпилированным загружаемым образом и исходными файлами.
Т.е. - вы изменили исходники, но не перекомпилили образ. Обычно компилятор перед стартом отладки, определяет если исходники были изменены после последней компиляции и предлагает их пересобрать. Но иногда он по какой-то причине может не обнаруживать это. И тогда наблюдается то, что у вас.

Совет - полная пересборка проекта. С нуля. Лучше - с предварительным удалением всех предыдущих результатов компиляции. Ну или хотя-бы - через соответствующий пункт в меню компилятора.
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 437
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

А ещё полезно иметь рядом окно с "disassembling", там сразу видно что чему соответствует.
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 22 апреля 2026 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.
/!\ Обновлений для STM32PowerMon и STM32PowerMon-UCPD временно не будет.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 26080
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Сообщение Муркиз »

Сообщение об ошибке при останове не появляется ?
Реклама
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

Правильно настрой оптимизацию для отладки.
https://cloud.mail.ru/public/GjPf/jncyBG7WL
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

[uquote="Муркиз",url="/forum/viewtopic.php?p=4704628#p4704628"]Сообщение об ошибке при останове не появляется ?[/uquote]
Нет. Просто останавливается не в том месте.

Добавлено after 2 minutes:
[uquote="HardWareMan",url="/forum/viewtopic.php?p=4704607#p4704607"]А ещё полезно иметь рядом окно с "disassembling", там сразу видно что чему соответствует.[/uquote]
Открыто. Но, я в нем не чего не понимаю. Отличается от ассемблера в avr.

Добавлено after 2 minutes 12 seconds:
[uquote="tonyk",url="/forum/viewtopic.php?p=4704654#p4704654"]Правильно настрой оптимизацию для отладки.
https://cloud.mail.ru/public/GjPf/jncyBG7WL[/uquote]
Написал выше. Оптимизация нет.

Добавлено after 2 minutes 43 seconds:
Если убрать точку останова то программа не входит в функцию if а возвращается на начало while.

Добавлено after 3 minutes 8 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4704518#p4704518"]как volatile.[/uquote]
Сделал. Теперь стал проверять if, но потом вываливается в начало не зависимо от результата сравнения.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

RUNA писал(а):Написал выше. Оптимизация нет.
А должна быть для отладки, иначе будут непонятные прыжки по программе.
Последний раз редактировалось tonyk Вс апр 13, 2025 11:00:56, всего редактировалось 1 раз.
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Если путь меняется после изменения условий, то вероятно проверка становится бессмысленной (т.е. результат с ней и без нее: одинаков).
Попробуйте оптимизировать свои проверки, например: с листом бумаги и карандашом.

В общем (из AVR-щиков) до сих пор не понимаю, почему есть выражения типа: 1<<0; 0b11<<0; 0b000<<0 ...
Что-то вроде "диалекта AVR" :). Не могу к этому привыкнуть и всё тут :) (+ транслейт).
Проще рассчитать и установить окончательное значение.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

[uquote="tonyk",url="/forum/viewtopic.php?p=4704666#p4704666"][
А должна быть для отладки[/uquote]
Попробую.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Если код не скрыт и не секретен ( :solder: ), можете ли поделиться здесь всем архивом?
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

[uquote="veso74",url="/forum/viewtopic.php?p=4704668#p4704668"]В общем (из AVR-щиков) до сих пор не понимаю, почему есть выражения типа: 1<<0; 0b11<<0; 0b000<<0 ...[/uquote]
Я то же из avr-щиков. Это просто, сдвиг в лево по маске с определенного бита.

Добавлено after 51 second:
[uquote="veso74",url="/forum/viewtopic.php?p=4704676#p4704676"]Если код не скрыт и не секретен ( :solder: ), можете ли поделиться здесь всем архивом?[/uquote]
Вечером.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Сдвиг в лево по маске понятно и нормально, Сдвиг с 0 - нет.
Контактная информация:
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

[uquote="RUNA",url="/forum/viewtopic.php?p=4704675#p4704675"][uquote="tonyk",url="/forum/viewtopic.php?p=4704666#p4704666"][
А должна быть для отладки[/uquote]
Попробую.[/uquote]
Ага, картинка выше.
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

[uquote="veso74",url="/forum/viewtopic.php?p=4704678#p4704678"]Сдвиг в лево по маске понятно и нормально, Сдвиг с 0 - нет.[/uquote]
Сброс битов.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Это не хвост, это антенна
Сообщения: 1324
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Сообщение tonyk »

[uquote="veso74",url="/forum/viewtopic.php?p=4704678#p4704678"]Сдвиг с 0 - нет.[/uquote]
Для единообразия.

Код: Выделить всё

    spi -> CR1 =
        ( 0  << SPI_CR1_BIDIMODE_Pos )  | // 
        ( 0  << SPI_CR1_BIDIOE_Pos )    | // 
        ( 0  << SPI_CR1_CRCEN_Pos )     | // 
        ( 0  << SPI_CR1_CRCNEXT_Pos )   | // 
        ( 0  << SPI_CR1_DFF_Pos )       | // 
        ( 0  << SPI_CR1_RXONLY_Pos )    | //   Fullduplex
        ( 1  << SPI_CR1_SSM_Pos )       | //   Software slave management disabled
        ( 1  << SPI_CR1_SSI_Pos )       | //  
        ( 0  << SPI_CR1_LSBFIRST_Pos )  | //   MSB передается первым
        ( 0  << SPI_CR1_SPE_Pos )       | //   Пока _не_ включаем SPI!
        ( br << SPI_CR1_BR_Pos )        | //   делитель шины для тактирования SPI;
        ( 1  << SPI_CR1_MSTR_Pos )      | //   Master
        ( 0  << SPI_CR1_CPOL_Pos )      | //   полярность тактового сигнала
        ( 0  << SPI_CR1_CPHA_Pos );       //   Фаза тактового сигнала
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

Проблему решил. Все дело в компиляторе. Он удалял эту функцию. Пришлось вместо MODIFY_REG(ControlKey,ControlKey,0b11<<0);
сделать SET_BIT(ControlKey,1<<0); А в другой функции вместо снятия бита установка бита, и тогда все заработало как надо.
veso74 вы просили прогу во вложении
Вложения
Proba2.rar
(775.49 КБ) 89 скачиваний
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Строка 60:

Код: Выделить всё

if(READ_BIT(GPIOB->IDR,GPIO_IDR_IDR12) == 0)
всегда равна 1. Проверка всегда переходит отсюда на строку 84. GPIO_IDR_IDR12 вероятно не изменяется.
(Регистр входных данных GPIO используется для чтения состояния ввода-вывода определенного контакта GPIO или порта GPIO. Здесь можем только читать этот регистр, но не записывать в него).
СпойлерИзображение
Не знаю логику создания устройства. Пересмотрите логику.
Последний раз редактировалось veso74 Вт апр 15, 2025 08:34:17, всего редактировалось 1 раз.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 249
Зарегистрирован: Ср дек 31, 2008 01:55:19
Откуда: Санкт-Петербург

Сообщение RUNA »

Логика простая. При нажатии кнопки происходит вычитание Skvagnoct1 по таймеру до мин значения. Когда достигло мин значения устанавливается бит 1, что бы не заходить в эту функцию. При отпускании кнопки переходим по else и по таймеру прибавляем Skvagnoct1 до макс значения и происходит сброс всех контрольных битов.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Ответить

Вернуться в «ARM»