Тогда вообще не понятен смысл второго варианта. Вместо того, чтобы сразу использовать некое значение по адресу 0x40006100, копировать его в переменную, а оттуда уже использовать. Разве что это значение будет использоваться несколько раз, а чтение из нечто находящегося по адресу 0x40006100 очень-очень медленное. Тогда наверное имеет смысл один раз скопировать его в быструю SRAM и использовать уже оттуда. Но как-то это все странно выглядит.
Разве что это значение будет использоваться несколько раз
Именно. При этом интересует скорость только чтения (копирование оставляем в покое ). А вот как быстро происходит чтение из адреса периферии (USB, в данном примере), я не знаю. Думаю вот какие варианты лучше использовать. С переменной будет более читабельно, но окажется ли медленнее?
Не быстрее так будет. Быстрее, если адрес периферийного устройства хранить в переменной, т.е. в ОЗУ. А в вашем примере, хоть дифайни его, хоть прямо в if используй, один черт он за константой адреса полезет во флеш.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Да это, как бы, понятно. При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.
если весь доступ в одном блоке, то компилер сам догадается один раз загрузить адрес в регистр. хотя, если жмет, под переменную можно выделить регистр (в GCC вроде доступны R4-R8 http://www.ethernut.de/en/documents/arm-inline-asm.html )
Подскажите как в IAR, включить функцию profilite function, я её запускаю ставлю на запуск, а после остановки все по нулям и так же с остальными фичами. Программирую через ST32F4Discovery, вывод SWO подключен.
Скажите пожалуйста, почему во время выполнения программы в контроллере одна переменная начинает изменять другую хотя они ни как не связаны, а потом как переименуешь одну из них добавлением любого символа в конце названия переменной и после компиляции все работает нормально...
Заголовок сообщения: Re: STM32 новичку в ARM что к чему
Добавлено: Ср июл 27, 2016 11:00:45
Друг Кота
Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36 Сообщений: 7439 Откуда: г. Москва
Рейтинг сообщения:0
a5021 писал(а):
При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.
Компилятор при оптимизации во всем этом прекрасно разберется и, если смысла нет, в память ничего сохранять не будет. Она ж не volatile. Зато текст аккуратный и читаемый.
При оценке таких нюансов я бы вообще не закладывался на интеллектуальность компилятора. У него собственная стратегия оптимизации и она не всегда будет совпадать с чьими-то еще представлениями об оптимальности.
Добрый день, если правильно понял, то без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6. Подскажите пожалуйста правильно ли понял? И был ли у кого-то такой опыт?
без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6.
Есть документ "Переход от микроконтроллеров STM32F1 к STM32F3", ниже прикреплен. Где сказано, что есть некоторые изменения в выводах. Без перекомпиляции программы думаю не получится.
Сижу вот и думаю, а что выходит на ЦАПе МК - меандр с частотой около 1МГц или внутри уже есть подобие фильтра и на выходе "чистый" аналоговый сигнал? Вот бы посмотреть осцилограммы выхода с ЦАП без применения внешних фильтров и емкостной или индуктивной нагрузки...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения