Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 05.05.2017, 10:05  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Если бы сами попробовали, то знали бы. Просто так компилятор не выбросит i, нужны веские на то основания. А эти самые "веские основания" в пошаговой отладке неприменимы.
Предлагаю с этим вопросом вам разобраться самостоятельно.
Предлагаю вам не писать всякую херню если вы не в теме. Эдди вам правильно всё сказал. Компилятор имеет полное право выкинуть переменную если она нигде больше не используется. Что в общем и происходит на самом деле - переменная спокойно выкидывается компилятором как атавизм.
И юзать -O0 при отладке это упоротое нубство. Что в принципе и подтверждает ваш низкий уровень знаний.
Реклама:

Последний раз редактировалось STM32F0; 05.05.2017 в 10:07.
STM32F0 вне форума  
Непрочитано 05.05.2017, 10:37  
Den
Частый гость
 
Регистрация: 03.05.2017
Сообщений: 32
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
Den на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Всем доброго дня,
Закоментирование SetSysClock() не дало результата, так же как и PLL_M 8 и HSE_VALUE = 8000000. В пошаговом выполнении программа идет в main(), в GPIO_SetBits() и там циклится, состояние GPIOD не меняется, все регистры "0"...
NewWriter ваш пример работает, диоды загораются. Почему с SPL не работает...
Похоже нужно готовится к написанию программ непосредственно в регистрах

Последний раз редактировалось Den; 05.05.2017 в 10:42.
Den вне форума  
Непрочитано 05.05.2017, 11:31  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от STM32F0 Посмотреть сообщение
И юзать -O0 при отладке это упоротое нубство. Что в принципе и подтверждает ваш низкий уровень знаний.
Не надо генерировать бред. Вы сами то вылезали дальше, чем F0? Во-во, то-то и оно.
Попробуйте пошаговую отладку -O3, а лучше -Os, поделитесь потом впечатлениями.
Так что не пишите бреда.
Будете еще, блин, советовать разбираться с непонятной ситуевиной на уровне -O3. Вот это и есть упоротое нубство.

Сообщение от STM32F0 Посмотреть сообщение
переменная спокойно выкидывается компилятором как атавизм.
Атавизм - это образ вашего мЫшления.
Напишите volatile - и будет ваша переменная цела и здорова.

Лучше бы не за переменную цеплялись, а разобрались бы в неполадках у вопрошающего. Или что, кишка тонка? То-то и оно.
Уцепились за переменную i в моем примере, а у автора вопроса не увидели лажи. То-то же! Вот вам и уровень ВАШИХ знаний.
А теперь следите за пальцем:

int main(void)
{
void gpio_led_f(void);
....
while ....

объявление функции внутри функции.
Не вызов, а объявление.
Фактически, функция настройки портов НЕ ВЫЗЫВАЕТСЯ.
В этом и причина. Это и объясняет полные нули в регистрах - тактирование модуля GPIOD не было включено, потому что функция не была вызвана.
Признаться, я тоже не сразу заметил, если честно. но мне простительно, вы же считаете меня нубом. А сами то? Вот именно. Вы даже не можете отличить объявление функции от ее вызова. Ога!
Так кто после этого упоротый нуб с недостатком знаний? Ну что? Можете только с простейшей i ковыряться, а логику работы уже не вкуриваете

Последний раз редактировалось NewWriter; 05.05.2017 в 11:51.
NewWriter вне форума  
Непрочитано 05.05.2017, 11:51  
Den
Частый гость
 
Регистрация: 03.05.2017
Сообщений: 32
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
Den на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Хмм...возможно, но помойму я и с void делал и без void, попробую..спасибо

Последний раз редактировалось Den; 05.05.2017 в 11:54.
Den вне форума  
Непрочитано 05.05.2017, 11:55  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Так, ЫЕЬ32, харэ генерировать бред, засоряешь ветку.
Сообщение от STM32F0 Посмотреть сообщение
Я всё связанное с СПЛ тупо игнорирую.
так ошибка была не в SPL, а в вызове (вернее, в невызове) обычной сишной функции. Так что это ваш прокол. Промолчали бы - за умного сошли бы.

Последний раз редактировалось NewWriter; 05.05.2017 в 12:01.
NewWriter вне форума  
Непрочитано 05.05.2017, 12:17  
Den
Частый гость
 
Регистрация: 03.05.2017
Сообщений: 32
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
Den на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Какая однако у вас тут специфическая атмосфера на форуме
Den вне форума  
Непрочитано 05.05.2017, 12:36  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

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

Сообщение от STM32F0 Посмотреть сообщение
которую компилятор не глядя выбрасывает?
Где? Кто? Куда выбрасывает? прочти листинг, если разбираешься конечно. Есть она там, ф три инстюхции ажно. Неуч.

Последний раз редактировалось NewWriter; 05.05.2017 в 12:44.
NewWriter вне форума  
Непрочитано 05.05.2017, 15:16  
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Я ранее показывал, что никуда i не выбрасывается.
Тема злополучной переменной до конца не раскрыта.
1. Если она не выбрасывается, то куда она девается?
2. Почему int? Почему не char или short int?
3. Почему именно знаковая?
4. Что будет с переменной после переполнения?
5. Как отразится её переполнение на отладке?
6. Что это за отладка, если она никому не знакома? В чём её суть?
7. И как и что можно отлаживать с помощью этой переменной, если компилятор обязательно её выбросит?
scorpi_0n вне форума  
Непрочитано 05.05.2017, 15:44  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Вы не правы. Если бы сами попробовали, то знали бы. Просто так компилятор не выбросит i, нужны веские на то основания. А эти самые "веские основания" в пошаговой отладке неприменимы.
Предлагаю с этим вопросом вам разобраться самостоятельно.

while (1)
{
i++;
20000246: 687b ldr r3, [r7, #4]
20000248: 3301 adds r3, #1
2000024a: 607b str r3, [r7, #4]

} /* while (1) */
Вы так самоуверенны... Конечно же я пробовал и даже перед тем, как спрашивать. Потому и спросил - может я чего-то тут не знаю. Это действительно генерируется, но только при выключенной оптимизации (-O0) или если эта i будет объявлена volatile. В остальных случаях её и следа нет, в том числе и при оптимизации -Og.
Кстати, при выключенной оптимизации (-O0) компилятор и while(0) не выкидывает (но выкидывает то, что в нём) - заменяет его на безусловный переход на nop.
Я пробовал на компиляторе gcc-arm-none-eabi-6-2017-q1-update
Так что у меня ответное предложение - не быть настолько самоуверенным.
А вот в том, что gpio_led_f тут:
Код:
nt main(void)
{
void gpio_led_f(void);
....
while ....
не вызывается - Вы правы. И предупреждений тоже нет (кроме того, что нет прототипа для gpio_led_f), хотя на IAR может и не так.
Этого-то я даже не заметил, наверное Ваша i всё внимание отвлекла)))
H4LF вне форума  
Непрочитано 05.05.2017, 15:59  
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Den Посмотреть сообщение
Какая однако у вас тут специфическая атмосфера на форуме
Это точно, атмосфера жуткого профессианализма...
А всего-то спросил - для чего нужна переменная i.
https://habrahabr.ru/post/317880/

scorpi_0n, в данном случае все эти пункты можно заменить на один:
1. NewWriter всегда прав.
Ну это судя по тому, как он доказывал, что Сишный компилятор может выкинуть (и выкидывает) while(1);
(кстати, встречал таких преподов, которые всегда правы - ужаснее для образования и придумать сложно).
H4LF вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 09:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot