Stm32 с чего начать изучение...
- linux_rulezz
- Вымогатель припоя
- Сообщения: 584
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Stm32 с чего начать изучение...
[uquote="Rapra",url="/forum/viewtopic.php?p=4797198#p4797198"]Вообще-то, хорошая IDE - это всегда лучше, чем "блокнот".[/uquote]
Мне-то это объяснять не надо, я qt-creator использую.
Но если надо что-то мелкое наколотить, строк до ста, то просто в mcedit пишу код. И мелкие правки делаю там же — в mcedit (особенно если по ssh, когда лень монтировать по sshfs удаленный ресурс и открывать qt-creator'ом).
Мне-то это объяснять не надо, я qt-creator использую.
Но если надо что-то мелкое наколотить, строк до ста, то просто в mcedit пишу код. И мелкие правки делаю там же — в mcedit (особенно если по ssh, когда лень монтировать по sshfs удаленный ресурс и открывать qt-creator'ом).
Windows must die!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
я тут внезапно увидел, что мои сообщения с просьбами о помощи отмечены минусами... оказывается, спрашивать на форуме, по мнению некоторых, надо в какой-то особой форме, чтобы, не дай бог, не оскорбить чувства верующих в vim и консольный gdb...
собственно, эти минусы подтверждают моё же утверждение (так же заминусованное - видимо, правда глаза колет):
собственно, эти минусы подтверждают моё же утверждение (так же заминусованное - видимо, правда глаза колет):
а для других, которые на работе страшно заняты, чтобы отвлекаться на помощь, сообщу, что рабочее время никому не мешает флеймить и флудить в других темах. тут не в занятости дело, как я думаю, а в "принципиальности". то же самой, что заставляет "поучать", как надо испрашивать помощь...ARV писал(а):форум из места, где можно получить помощь, превратился в место, где можно получить ведро помоев на голову
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
Втихаря зарелизили CubeMX2, пока только STM32C5 поддерживает и все более новые серии будут только в нем. HAL заменили на основательно переработанный и более оптимизированный HAL2 который полагается на LL. CMSIS до 6.3 обновили. Выглядит вроде как получше:
ps. Касательно STM32С5, таки есть там PLL, но ради простоты(у STM32C0 PLL не было), ST старательно об этом умалчивает, только в одном стороннем документе упоминание нашел. PLL представили как PSI генератор, на вход подается частоты кратная 8MHz или 32768, на выходе 120/144/160MHz.
Спойлер
- Вложения
-
- Снимок экрана 2026-03-18 185154.png
- (205.42 КБ) 393 скачивания
Re: Stm32 с чего начать изучение...
Да нуна! Не прошло и 7 лет! А с момента рождения HAL прошло уже... ээээ... более 10 лет, по-моему.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
если МК ненадежно стартует при подаче питания, порог BOR лучше увеличить или снизить? мне кажется, лучше увеличить, но сторонние мнения расходятся, некоторые рекомендуют вообще отключиь BOR...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
[uquote="ARV",url="/forum/viewtopic.php?p=4800341#p4800341"]порог BOR лучше увеличить или снизить?[/uquote]
Лучше разобраться с питанием, почему оно не успевает стабилизироваться к моменту старта МК. Или поставить внешний монитор питания с настраиваемой задержкой, чтобы стартовать МК при нормальном питании.
Однозначно ответить на вопрос нельзя. Например, не известно, на какой частоте стартует МК, сколько периферии включается. Ещё пример. У меня в стартапе сначала задаётся максимальная тактовая частота, потом вызывается стандартный код инициализации С и С++, а ХАЛ от СТМ наоборот сначала медленно и печально выполняет инициализацию, а потом только код пользователя настраивает частоту тактирования. Ессно, что потребление МК при работе на 16МГц и 160МГц заметно отличается, поэтому и настройка BOR будет отличаться. Повторюсь, разбирайтесь с питанием МК, оно в вашей схеме не в порядке.
Лучше разобраться с питанием, почему оно не успевает стабилизироваться к моменту старта МК. Или поставить внешний монитор питания с настраиваемой задержкой, чтобы стартовать МК при нормальном питании.
Однозначно ответить на вопрос нельзя. Например, не известно, на какой частоте стартует МК, сколько периферии включается. Ещё пример. У меня в стартапе сначала задаётся максимальная тактовая частота, потом вызывается стандартный код инициализации С и С++, а ХАЛ от СТМ наоборот сначала медленно и печально выполняет инициализацию, а потом только код пользователя настраивает частоту тактирования. Ессно, что потребление МК при работе на 16МГц и 160МГц заметно отличается, поэтому и настройка BOR будет отличаться. Повторюсь, разбирайтесь с питанием МК, оно в вашей схеме не в порядке.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1902
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Stm32 с чего начать изучение...
В большинстве случаев помогает RC-цепь в NRST: 10k/100nF.
При первой подобной нестабильность установил RC, затем устанавливаю там "по инерции".
С тех пор еффект не повторялось, многих типов STM32, и не только.
Да, еще один эффект был с использованием кварца с низкой активностью. Увеличение времени помогло.
Автоматически (через MX) или вручную.
Если в CMSIS: сделайте паузу при старта и проанализируйте, запустился ли он.
При желании, если HSE не сработает, можете вернуть управление к HSI.
При первой подобной нестабильность установил RC, затем устанавливаю там "по инерции".
С тех пор еффект не повторялось, многих типов STM32, и не только.
Да, еще один эффект был с использованием кварца с низкой активностью. Увеличение времени помогло.
Автоматически (через MX) или вручную.
#if !defined (HSE_STARTUP_TIMEOUT)
#define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */
Если в CMSIS: сделайте паузу при старта и проанализируйте, запустился ли он.
При желании, если HSE не сработает, можете вернуть управление к HSI.
Код: Выделить всё
uint32_t timeout = 1000000;
while (!(RCC->CR & RCC_CR_HSERDY) && --timeout);
if (timeout == 0) {
// error: HSE not start
return;
}Код: Выделить всё
timeout = 100000;
while (!(RCC->CR & RCC_CR_PLLRDY) && --timeout); // wait for PLL to go active
if (timeout == 0) {
// handle PLL stop error
}Re: Stm32 с чего начать изучение...
[uquote="ARV",url="/forum/viewtopic.php?p=4800341#p4800341"]если МК ненадежно стартует при подаче питания, ...[/uquote]
Внешняя цепь сброса, с задержкой NRST на RC-цепи.
А еще лучше посмотреть осциллографом переходные процессы при нарастании питания. Возможно, оно проваливается где-то в середине нарастания.
Принцип работы BOR: если напряжение VDD/VDDA ниже установленного порога BOR, микроконтроллер находится в состоянии reset. Если VDD падает ниже порога BOR, микроконьроллер так же сбрасывается.
Однозначно ответить о выборе порога BOR можно только посмотрев осциллограмму момента подачи напряжения.
Внешняя цепь сброса, с задержкой NRST на RC-цепи.
А еще лучше посмотреть осциллографом переходные процессы при нарастании питания. Возможно, оно проваливается где-то в середине нарастания.
Принцип работы BOR: если напряжение VDD/VDDA ниже установленного порога BOR, микроконтроллер находится в состоянии reset. Если VDD падает ниже порога BOR, микроконьроллер так же сбрасывается.
Однозначно ответить о выборе порога BOR можно только посмотрев осциллограмму момента подачи напряжения.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
спасибо за советы, но никаких измерений в плате пока сделать невозможно, т.к. доступ к ней сильно затруднен. МК тактируется от встроенного RC, как он там... HSI? цепь сброса как раз 10К-0,1 мкФ, 10 лет работало, теперь начало вот так странно стартовать... но меня эти 10 лет не было, это наследство. пока думаю просто BOR включить, если не включен.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
"Странно" - это как?
Возможно, за 10 лет подсохли конденсаторы в питании и его качество ухудшилось.
Возможно, за 10 лет подсохли конденсаторы в питании и его качество ухудшилось.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
странно - это так, как описал: то стартует, то нет. но если питание после неудачного старта быстро передернуть - стартует почти всегда. вроде говорят, что все эти 10 лет так и запускали станок - передергиванием питания... но это не точно
все электролити в источнике питания поменяли без меня
все электролити в источнике питания поменяли без меня
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
Ну, тут без натурных изменений можно сколько угодно гадать. Надо убедиться, что именно микроконтроллер за запускается, а не что-либо на плате или в окружении.
Если на плате стоят какие-либо еще микросхемы, с которыми общается микроконтроллер (например, дисплей), то медленное нарастание питания и разное время готовности к работе может приводить к такому эффекту. Например (из своей практики) - микроконтроллер запускается быстро и начинает передавать команды в дисплей, а дисплей еще не готов их принять из-за того, что у него другие тайминги готовности после подачи питания. И после повторного быстрого передергивания питания дисплей оказывается уже готов к приему команд.
В самом начале эта ошибка могла быть незамеченной, поскольку проходило "на тоненького". А со временем чуть изменились показатели и срабатывать уже перестало. При такой причине стоит в прошивке перед отправкой команд дисплею либо ввести запрос состояния его готовности (если такое предусмотрено), либо ввести дополнительную задержку передачи команд на гарантированное время.
Добавлено after 2 minutes 37 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=4800473#p4800473"]все эти 10 лет так и запускали станок - передергиванием питания.[/uquote]
Значит, вероятна типичная ошибка разработчика - на столе у него работало, а на месте - не работает. По вышеописанной проблеме, скорее всего.
Добавлено after 3 minutes 25 seconds:
Если вышеописанное подходит к этому случаю, то возможно может помочь включение BOR с максимально высоким уровнем, с целью замедлить запуск микроконтроллера в процессе нарастания питания.
Если на плате стоят какие-либо еще микросхемы, с которыми общается микроконтроллер (например, дисплей), то медленное нарастание питания и разное время готовности к работе может приводить к такому эффекту. Например (из своей практики) - микроконтроллер запускается быстро и начинает передавать команды в дисплей, а дисплей еще не готов их принять из-за того, что у него другие тайминги готовности после подачи питания. И после повторного быстрого передергивания питания дисплей оказывается уже готов к приему команд.
В самом начале эта ошибка могла быть незамеченной, поскольку проходило "на тоненького". А со временем чуть изменились показатели и срабатывать уже перестало. При такой причине стоит в прошивке перед отправкой команд дисплею либо ввести запрос состояния его готовности (если такое предусмотрено), либо ввести дополнительную задержку передачи команд на гарантированное время.
Добавлено after 2 minutes 37 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=4800473#p4800473"]все эти 10 лет так и запускали станок - передергиванием питания.[/uquote]
Значит, вероятна типичная ошибка разработчика - на столе у него работало, а на месте - не работает. По вышеописанной проблеме, скорее всего.
Добавлено after 3 minutes 25 seconds:
Если вышеописанное подходит к этому случаю, то возможно может помочь включение BOR с максимально высоким уровнем, с целью замедлить запуск микроконтроллера в процессе нарастания питания.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
Просто в качестве пояснения: это кусок блока управления ЧПУ-станка, никаких там дисплеев нет
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
Тут надо действительно смотреть, что происходит на плате. Если проблема имелась все 10 лет, значит, там была ошибка разработчика.
Запуск после быстрого передергивания питания скорее всего связан с неодинаковым временем готовности микроконтроллера и окружения на плате, когда запустившийся микроконтроллер пытается слать команды "в пустоту", в еще не готовые к приему микросхемы окружения.
В общем, на плате смотрим осциллографом нарастание питания и сигнал сброса NRST, а так же смотрим активность микроконтроллера на его выходах.
Запуск после быстрого передергивания питания скорее всего связан с неодинаковым временем готовности микроконтроллера и окружения на плате, когда запустившийся микроконтроллер пытается слать команды "в пустоту", в еще не готовые к приему микросхемы окружения.
В общем, на плате смотрим осциллографом нарастание питания и сигнал сброса NRST, а так же смотрим активность микроконтроллера на его выходах.