Jump to content

    
Vlad_G

Отладка в CubeIDE

Recommended Posts

6 minutes ago, haker_fox said:

Ну и?) Вы знаете, я знаю, нужно чтобы автор сам разобрался с этим вопросом.

Может это ускорит процесс изучения. В толстых книгах бывает сложно людям найти нужный ответ.

Share this post


Link to post
Share on other sites
48 minutes ago, bgc said:

Может это ускорит процесс изучения. В толстых книгах бывает сложно людям найти нужный ответ.

Если за любым чихом создавать топик и ждать разжевынный ответ, то до старости так и будешь топики создавать. Надо учиться самому ответы находить.

Share this post


Link to post
Share on other sites
1 hour ago, bgc said:

В толстых книгах бывает сложно людям найти нужный ответ.

Керниган и Ричи "Язык Си" - толстая книга? Смешно. А если открыть её как электронную, то искать совсем просто.

1 hour ago, bgc said:

Может это ускорит процесс изучения.

Может.

Share this post


Link to post
Share on other sites
15 hours ago, haker_fox said:

нужно чтобы автор сам разобрался с этим вопросом.

По волатиле у меня вопросов как раз и не было. Не вооруженным глазом видно в билданализире волатиле-переменным присваиваются конкретные и не изменяемые адреса и компилятор их не трогает (возможно, что это особенность atollic-a, а в других системах будет по другому). Хорошо это или плохо - хз, зависит от конкретики. В универе нам говорили, что goto прям ужосужосужос и не принимали программы с их участием. Потом оказалось, что команда безусловного перехода ничем не хуже других команд и вполне себе годнота. Так и тут, каждый автор рассматривает по ощущениям своим.

Ну, не работал я с С, сейчас пытаюсь разобраться. Иногда спрашиваю. Мои извинения, если задел чьи-то чувства.

 

Share this post


Link to post
Share on other sites
8 minutes ago, Vlad_G said:

волатиле-переменным присваиваются конкретные и не изменяемые адреса

Назовите мне переменные, которым присваиваеются неконкретные и изменяемые адреса? Вы вообще о чём? Глобальным и статическим переменным тоже назначаются постоянные и неизменяемые адреса. Стэковые переменны могут получить любой адрес, но этих переменных и не существует на момент компиляции. То же самое и с динамическими объектами, создаваемыми в куче. Другое дело, что оптимизатор вправе выкинуть ваши переменные, если он в состоянии просчиттаь результат без их участия. Например, это

int foo() {
  int a = 5;
  int b = 7;
  int c = a + b;
  return c;
}

превратится в

int foo() {
  return 12;
}

Ибо зачем занимать память под переменные a, b и с? А то и вообще вместо вызова функции будет подставлена сразу константа. Но иногда нужно, как бы это не выглядело со стороны оптимизатора, такие "глупые" действия с переменными сохранить. Например, если за переменной кроется регистр, значение которого может изменяться асинхронно по отношению к коду. Вот для этого и используется ключевое слово volatile. В этом случае, комплятор сгенерирует код, который всегда обращается к адресу, в котором находится переменная, и не оптимизирует действия с ней, записав её, например, в регистр АЛУ.

 

8 minutes ago, Vlad_G said:

По волатиле у меня вопросов как раз и не было.

Потому что вы не понимаете о чём говорите, сорри за прямоту. Ну это чтобы у нас недомолвок не возникало) Откройте же уже книжку или статью в инете.

8 minutes ago, Vlad_G said:

В универе нам говорили, что goto прям ужосужосужос

Речь не о стилях программирования. Речь о стандарте.

8 minutes ago, Vlad_G said:

Так и тут, каждый автор рассматривает по ощущениям своим.

Если вы так будете делать, ваши программы будут сборищем глюков. Читайте стандарт на язык или хотя бы книгу. Всё. Других вариантов быть не может. Ну кроме что каких-то дополнений от профессионала, который встречал неадекватное поведение компилятора X в ситуации Y. Да, компиляторы иногда содержат ошибки. Очень редко. Но содержат.

8 minutes ago, Vlad_G said:

Мои извинения, если задел чьи-то чувства.

Дело в другом. Тут физически вам не смогут ответить на все мелкие возникающие вопросы: приоритеты операторов, как влияют скобки, выравнивание данных в памяти, сравнение чисел с плавающей точкой. Просто эту базу нужно освоить. Это фундамент.

Share this post


Link to post
Share on other sites
14 hours ago, x893 said:

Если за любым чихом создавать топик и ждать разжевынный ответ, то до старости так и будешь топики создавать. Надо учиться самому ответы находить.

Вот это уже философский вопрос. За много лет на форумах уже накопились ответы на все вопросы, надо только поискать (а действительно, выходит что-то новое, а принципиально новое не так уж и часто выходит, быстренько обсасывают и ищем в архиве). Только будет ли это форумом? Или это будет кладбищем, где делов-то только найти могилку? Как вариант делать закрытый форум, такой междусобойчик для "казырей", но тут уже собственник репу чешет - то количество народу соответствует ли его ожиданиям.

В конечном итоге вопрошающий проигрывает, поскольку не дошел сам, а вы, х893, подтвердили свою квалификацию. 

Соррян, занесло. 

Share this post


Link to post
Share on other sites
2 minutes ago, Vlad_G said:

ответы на все вопросы

Все? Вы так шутите в пятницу? Не смешно. Смайлика нет.

2 minutes ago, Vlad_G said:

Только будет ли это форумом?

Похоже, чтовы не видите разницы между форумом и литературой. Ок. Поясню: на форуме вы задаёте конкретный вопрос для конкретной ситуации. И если она внешне похоже на ту, которую задали пару дней назад, это ещё не значит, что ответ вам подойдёт. Книга же даёт вам сразу кругозор, в том плане, как действовать не в конкретной ситуации, а во множестве подобных ситуаций. И потом, уже испоользуя логику и прочие когнитивные навыки, вы приходите от общего (книга) к частному (решение вашей проблемы). А вы пытаетесь идти от частного (чужого) к своему частному.

5 minutes ago, Vlad_G said:

В конечном итоге вопрошающий проигрывает

Ну да. Ибо не умеет учиться. А с каждой мелочью идёт на форум. А так как у него много мелочей, которые он не знает, то да - проигрывает. А знал бы эти мелочи, то задавал бы крупные вопросы, коих не с десяток каждый день, а один в неделю)

8 minutes ago, Vlad_G said:

х893, подтвердили свою квалификацию. 

Какое вам дело до участников форума? Думайте о себе.

Share this post


Link to post
Share on other sites
6 minutes ago, haker_fox said:

Назовите мне переменные, которым присваиваеются неконкретные и изменяемые адреса? Вы вообще о чём?

Хорошо, может проясню для себя с вашей помощью.

Локальная переменная с видимостью в пределах функции - не фигурирует в билд-анализире и файл .elf ее не передает в STMStudio  (в данном контексте меня не интересуют способы передачи данных между функциями). Адрес этой переменной будет разный, в зависимости от ситуации. Адрес корректный, но изменяемый.  Ошибаюсь?

Share this post


Link to post
Share on other sites
3 minutes ago, Vlad_G said:

Ошибаюсь?

Прочитайте мой ответ выше. Я вам про такую переменную написал. Но вы то ей противопоставляете переменную с квалификатором volatile. А это уже другой вопрос.

 

Я и говорю снова: вы задаёте детские вопросы, которые даже на форуме искать не надо. Лень книгу открыть? Или авторы не нравятся? Нет, я не против, я не хозяин форума, задавайте. Только каков ваш следующий вопрос будет? Почему код ниже работает некорректно?

if( a == b ) // a и b переменные типа float

 

Share this post


Link to post
Share on other sites
22 minutes ago, haker_fox said:

Вот для этого и используется ключевое слово volatile. В этом случае, комплятор сгенерирует код, который всегда обращается к адресу, в котором находится переменная, и не оптимизирует действия с ней, записав её, например, в регистр АЛУ.

Вот это мне и надо. Более того, мне надо заранее знать каким будет этот адрес. Чем хуже волатиле других конструкций?

Share this post


Link to post
Share on other sites
6 minutes ago, Vlad_G said:

Вот это мне и надо

Вы что, регистр описываете у микроконтроллера? Так они уже все есть в хидере вашего компилятора.

6 minutes ago, Vlad_G said:

Более того, мне надо заранее знать каким будет этот адрес

Ну это точно не с помощью volatile делается.

7 minutes ago, Vlad_G said:

Чем хуже волатиле других конструкций?

Вы просто не понимаете разницы. Я вам объяснять весь курс начального программирования не хочу. Ну либо платите мне. Возможно, другие участники форума это сделают. Хотя, сомневаюсь.

Share this post


Link to post
Share on other sites
21 minutes ago, haker_fox said:

Почему код ниже работает некорректно?

Ну не, такого вопроса точно не будет. Я с флоатом не работаю в принципе. Только инт - я соглашаюсь на некоторую погрешность при вычислениях, лишь бы не флоат. :acute:

 

Хорошо! Спасибо еще раз, а вам haker_fox - особенно (и это не стёб) за терпение.

Edited by Vlad_G

Share this post


Link to post
Share on other sites
14 minutes ago, Vlad_G said:

Я с флоатом не работаю в принципе.

Так это дело времени.

14 minutes ago, Vlad_G said:

особенно (и это не стёб) за терпение.

Дерзайте) Я тоже раньше пытался по форумам учиться. Но со временем понял, что это очень неэффективно. Читая книгу - получаешь сразу пласты знаний. Появляется кругозор, фундаментальная подготовка. Встречая новую задачу - вспоминаешь, а ведь я про это читал. При необлходимости  вновь освежаешь знания. Но самое главное - это совеобразные реперные точки, которые остаются в памяти... Именно поэтому я ставлю литературу на первое место.

Share this post


Link to post
Share on other sites
2 hours ago, Vlad_G said:

В конечном итоге вопрошающий проигрывает, поскольку не дошел сам

Вот в этом и проблема. Хотя возможностей для самостоятельного решения сильно больше стало. А скоро к форуму подключат ИИ, тогда ответы сразу будут появляться во время набора текста.

Share this post


Link to post
Share on other sites
6 hours ago, Vlad_G said:

Я с флоатом не работаю в принципе. Только инт - я соглашаюсь на некоторую погрешность при вычислениях, лишь бы не флоат. :acute:

А что это за принцип такой? Я о нем не знаю и, может быть живу много лет в грехе?

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.