19.02.2017, 10:27
|
#4811
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Через USB прошивальщик в сотой серии только в F105/107. Называется DFU bootloader.
В нулевой серии есть в F042, F07x.
Прошивальщик через бутлоадер - он чтоб в готовую поделку залить прошивку с минимальной возней...
|
|
|
|
20.02.2017, 09:02
|
#4812
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А где посмотреть сколько один такт процессора в дебаге Keil ? Интересен расчет задержки на for.
Также что то не могу сообразить откуда начинается программа зашитая в микроконтроллер и как распределяется память.
__________________
Глаза боятся,а руки делают.
|
|
|
|
20.02.2017, 09:38
|
#4813
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от CERGEI1982
|
Интересен расчет задержки на for.
|
Это — явный признак рукожопия. Таймеры на STM32 зачем придумали?
И да, длинные задержки — зло. Для этого есть КА.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
20.02.2017, 12:53
|
#4814
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
Это — явный признак рукожопия. Таймеры на STM32 зачем придумали?
И да, длинные задержки — зло. Для этого есть КА.
|
Может я вас путаю,но вы не с пиков ли начинали css и т д? Вы тогда тоже начали учится,потом помню вручную себе все библиотеки писали.
Да как бы в курсе,это изучение,а не рабочая программа.Вы уж сразу скажите RTOS.
Спросил где в отладчике посмотреть такт один,понимаю что можно взять 72 Мгц и посчитать,хотел в отладчике посмотреть.
Такое чувство что вас напрягают мои простые вопросы или может они глупые.Простите за мое мнение конечно.Все когда начинают учится с нуля.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 20.02.2017 в 13:20.
|
|
|
|
20.02.2017, 13:47
|
#4815
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Дело в том, что конкретное количество шагов (инструкций) в такой задержке for (i...){} будет очень сильно зависеть от уровня включенной оптимизации. При выключенной оптимизации такой цикл может занять 6-7 инструкций, при включении первого уровня он сокращается до 2 инструкций, а при втором уровне он вообще будет выкинут полностью. Имейте это ввиду! Указание volatile для переменной в цикле заставит не выкидывать этот цикл во включенной оптимизации.
Цикл вида
for (int i = 0; i‹10; i++) { __NOP(); }
со вставкой ассемблерной инструкции nop и включенной оптимизацией -O2 вставит 10 инструкций nop и подходит для создания очень коротких задержек. Если в цикле будет стоять i‹200, то вместо 200 nop-ов будет вставлен короткий цикл в 3 инструкции.
К тому же, инструкции бывают разные по ширине, и они могут исполняться на разное число тактов. Это не ПИКи, у которых написано, что "инструкции исполняются за 4 такта или 1 маш.цикл, а инструкции сравнения - за 2 маш.цикла". В АРМ более размыто время исполнения инструкции. К тому же, на высоких скоростях флеш не поспевает и из него извлекается небольшой последовательный блок (кэш инструкций), а как всякий кэш, он может и ошибиться в ветвлении.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
20.02.2017, 14:04
|
#4816
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от CERGEI1982
|
Такое чувство что вас напрягают мои простые вопросы или может они глупые.Простите за мое мнение конечно.Все когда начинают учится с нуля.
|
Больше похоже что именно вас напрягают чужие слова правды. Для вас это звучит пугающе и непонятно, как разрыв шаблона, как конец привычного, как конец мира, но при всей своей эмоциональности Эдди прав, на все 168658965%. Дело даже не во времени выполнения инструкций в СТМ32, их один хрен считают только в самых исключительных случаях, ну или по незнанию. В СТМ8 вы ощутите то же самое, хотя казалось бы. Всё дело в убогости периферии ПИКов и АВР, в ограниченности их ресурсов, ну и в ваших привычках подстраиваться под эту ограниченность. Да почти все начинали с ПИКов. Поэтому вам и говорят, забывайте про for (i...){} как можно быстрее. Не, при желании конечно можно и такое юзать, но результаты будут удручающие, а при усложнении проекта - фатальными.
|
|
|
|
20.02.2017, 14:14
|
#4817
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от CERGEI1982
|
Также что то не могу сообразить откуда начинается программа зашитая в микроконтроллер и как распределяется память.
|
Это надо смотреть карту памяти (Memory map) в даташите и вообще читать про то, какая память есть и как выбирается загрузочный сектор. Не помню номер документа, где это описано.
Кароч, у флеша адреса начинаются с 0x0800 0000, вот с них и начинается программа, записанная во флеш. Но там небольшой участок (разный оп длине для разных серий МК) - как раз и есть загрузочный сектор. И он может переключаться в зависимости от сигналов на Boot0, Boot1 ножках и в зависимости от настроек регистра опций. Этот загрузочный сектор транслируется на адреса, начиная с 0х0000 0000, с этого адреса стартует контроллер вообще. А что конкретно будет находиться по нулевому адресу - определяет "загрузочный переключатель", так-скать...
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
20.02.2017, 14:38
|
#4818
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от STM32F0
|
Больше похоже что именно вас напрягают чужие слова правды.
|
Даже и не напрягался,я спокойно смотрю на это.Форум для общения,вопросов и обсуждения. Я уважаю казус,конечно есть бред болтавни-войны ардуино,стм,пиков и авр. Бросил почти пики,тока стм. Мне просто нравиться учится и делать на микроконтроллерах разработки в силу хобби и свободного времени,а остальное меня не тревожит.
Больше никаких эмоций от меня,тока по делу. Уважаю как ваше время,так и свое,да и лень мне это уже.
NewWriter спасибо за полезные ответы.
Видел мельком в HAL как функция delay сделана на Systick.
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 20.02.2017 в 14:51.
|
|
|
|
20.02.2017, 15:00
|
#4819
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от CERGEI1982
|
функция delay
|
Явные задержки лучше всеми силами избегать, как я уже говорил. Systick лучше использовать по назначению — как системный таймер. Пусть, скажем, миллисекунды считает.
Очень редко бывает так, что на конечных автоматах задачу нельзя реализовать. У STM32 богатая периферия — зачем ограничиваться и пытаться те же задержки формировать циклами или паузами? Пусть во время задержки камень что-нибудь полезное делает, а саму задержку можно реализовать по-разному. Скажем, если нужно лишь минимальное время отмотать, N миллисекунд — приравниваем некоей переменной текущее значение системного времени, а в основном цикле проверяем, не прошло ли после нее Nмс. Как прошло — делаем что там нужно.
Если нужна строгая задержка (скажем, 1-wire), то она выполняется либо таймером, либо USART'ом.
Не дергать это можно лишь во время инициализации, если наплевать, что МК будет целую секунду "заводиться", то нужные задержки можно и for'ами с nop'ами реализовать. Но все равно помнить, что это зло.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
20.02.2017, 15:08
|
#4820
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от CERGEI1982
|
Я уважаю казус,конечно есть бред болтавни-войны ардуино,стм,пиков и авр. Бросил почти пики,тока стм. Мне просто нравиться учится и делать на микроконтроллерах разработки в силу хобби и свободного времени,а остальное меня не тревожит.
|
Да мне тоже пофигу на всю эту болтовню нубов, адептов и прочих тупых, с них ни профита, ни знаний, один пар из лужи. Но по личному опыту могу сказать, что на сегодняшний день СТМ32, а для мелких проектов и СТМ8, самые что ни на есть хоббийные. Их основная хоббийность в том, что при всей своей кажущейся сложности они позволяют создавать более-менее приличные проекты не прибегая к КА, в привычном виде, или РТОС. Главное изучить железо и забыть про унылые типовые решения "аля восьмибитка" или "аля РС". Поэтому забудьте про циклы, такты, задержки в привычном для вас понимании. Иначе вы в них утонете. Если уж совсем никак, юзайте для мС системный таймер, а для мкС - таймера, в новых СТМ32 их как правило хватает для средних проектов.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:26.
|
|