В двух словах все не объяснить. Надо тогда целую статью писать по этому поводу и подробно расписывать что и как тестировалось.
К тому же надо много фоток приложить. К примеру: как правильно и как не правильно разводить печатную плату. Почему нельзя ставить конденсаторы тип Y5R. Даже X7R не очень хорошо работают, хотя их рекомендует производитель. Ставить надо HPO. Ни в коем случае нельзя ставить электролит. Только тантал. Как оптимальней защитить лапки от внешних помех, статики и других неприятностей и т.д.
К тому же некоторые уже должны были заметить, что лапка сброса не всегда срабатывает. Могу к этому добавить, что в таких ситуациях и сторожевые таймеры безполезны. Вероятность вывести из зависания STM32F1XX лапкой сброса или сторожевиком составляет 1:7. У проца есть очень слабые лапки ( очень чувствительные к помехам создаваемые эфиром ). Это лапки связанные с RTC и кварцевыми генераторами,
а так же, как не странно, JTAG. Заставить лапки RTC меньше реагировать на помехи можно повесив на них ( те, что не используются ) конденсаторы пик этак 300. Что касается JTAG, то туда больше 50пФ ставить нельзя, а потому лучший способ, это подтянуть те лапки, которые идут к вашему jtag резисторами к питанию через 510 Ом. Еще один способ справится с лапками JTAG - это в вашей отлаженной программе вообще отключить JTAG. К стате уж точно нельзя оставлять не использованные лапки во float. Первой же командой всегда перевести все лапы на Pull-Down ( подтяжка вниз). Ну в софте то же подводные камешки встретились. К примеру программа должна всегда начинаться с задержки на 50 мс, далее должен стоять De_init, а уж потом Init. Забудте про то, что в даташите вам написали, что время сброса какие то там наносигунды. Т.е. оно может и так, только вот что они под этим имели ввиду? За это время ни кварц ни внутрение генераторы с умножителями уж точно не прекратят работу. А потому флаг готовности PLL просто вас обманет. На что это может повлиять? Ну на мигание светодиодом это точно не влияет. А вот если вы попробуете записать что нибудь ( из своей программы ) во Flash, а потом сделать програмный резет, ну или запустить из своей программы другую программу ( аля BOOT Loader) и после этого попробуете опять записать что либо во Flash, то процессор намертво повиснит. И ни какой внешний сброс или сторожевик не вуыведет кристалл из "клинча". Только отключение питания.
А вот еще по поводу лапок. У тех лапок, которые ADC ( не толерантные 5В ) очень слабые диоды, те что на землю подключены. Именно их в основном и пробивает. Это даже в тех поддержке признали и рекомендуют ставить дополнительную защиту.
PS: Ну вот. Не собирался писать статью, а получилось как всегда.

Ну вкратце как то так. Много чего еще хотелось бы рассказать.
В заключении могу обрадывать. Если соблюсти большую кучу всякой всячины, то STM32F1XX работает без сбоев, даже если в двух метрах от него работает сварка, а рядом трудятся станки с киловатными двигателями. Причем работает не один проц, а сразу 5 и на разных расстояниях друг от друга ( распределенная сеть устройств до 10 метров). К тому же эти устройства то же управляют двигателями с токами около 5А ( при старте до 20А ).
Сообщение отредактировал vlad_new - Aug 21 2011, 14:03