STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Тогда вообще не понятен смысл второго варианта. Вместо того, чтобы сразу использовать некое значение по адресу 0x40006100, копировать его в переменную, а оттуда уже использовать. Разве что это значение будет использоваться несколько раз, а чтение из нечто находящегося по адресу 0x40006100 очень-очень медленное. Тогда наверное имеет смысл один раз скопировать его в быструю SRAM и использовать уже оттуда. Но как-то это все странно выглядит.
Re: STM32 новичку в ARM что к чему
menzoda писал(а):Разве что это значение будет использоваться несколько раз
Именно. При этом интересует скорость только чтения (копирование оставляем в покое

Re: STM32 новичку в ARM что к чему
К периферии доступ должен быть с 0 wait states, так что использовать buff не имеет смысла, только лишнее копирование. А чтобы читабельнее было делаем
Код: Выделить всё
#define BUFF (*(__IO uint32_t*)(0x40006100))
if (BUFF == 100) {
...
Re: STM32 новичку в ARM что к чему
Не быстрее так будет. Быстрее, если адрес периферийного устройства хранить в переменной, т.е. в ОЗУ. А в вашем примере, хоть дифайни его, хоть прямо в if используй, один черт он за константой адреса полезет во флеш.
Re: STM32 новичку в ARM что к чему
Если это мне, то я не говорил что так будет быстрее, мы читабельность обсуждали.
Re: STM32 новичку в ARM что к чему
Пардон, увлекся.
Re: STM32 новичку в ARM что к чему
не факт. Адрес этой переменной все равно придется загрузить из flashБыстрее, если адрес периферийного устройства хранить в переменной, т.е. в ОЗУ
Re: STM32 новичку в ARM что к чему
Да это, как бы, понятно. При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.
Re: STM32 новичку в ARM что к чему
если весь доступ в одном блоке, то компилер сам догадается один раз загрузить адрес в регистр.
хотя, если жмет, под переменную можно выделить регистр (в GCC вроде доступны R4-R8 http://www.ethernut.de/en/documents/arm-inline-asm.html )
хотя, если жмет, под переменную можно выделить регистр (в GCC вроде доступны R4-R8 http://www.ethernut.de/en/documents/arm-inline-asm.html )
Re: STM32 новичку в ARM что к чему
Подскажите как в IAR, включить функцию profilite function, я её запускаю ставлю на запуск, а после остановки все по нулям и так же с остальными фичами.
Программирую через ST32F4Discovery, вывод SWO подключен.
Программирую через ST32F4Discovery, вывод SWO подключен.
Re: STM32 новичку в ARM что к чему
Скажите пожалуйста, почему во время выполнения программы в контроллере одна переменная начинает изменять другую хотя они ни как не связаны, а потом как переименуешь одну из них добавлением любого символа в конце названия переменной и после компиляции все работает нормально...
Re: STM32 новичку в ARM что к чему
a5021 писал(а):При разовом использовании вообще нет смысла ни в какой переменной. Зато если планируется многократное чтение с периферии, то смысл один раз потратиться на инициализацию переменной несомненен, чтобы потом доступ к периферии происходил без ожидания каждый раз, пока целевой адрес будет вытащен из флеша.
Компилятор при оптимизации во всем этом прекрасно разберется и, если смысла нет, в память ничего сохранять не будет. Она ж не volatile.
Зато текст аккуратный и читаемый.
Re: STM32 новичку в ARM что к чему
При оценке таких нюансов я бы вообще не закладывался на интеллектуальность компилятора. У него собственная стратегия оптимизации и она не всегда будет совпадать с чьими-то еще представлениями об оптимальности.
Re: STM32 новичку в ARM что к чему
Добрый день, если правильно понял, то без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6.
Подскажите пожалуйста правильно ли понял?
И был ли у кого-то такой опыт?
Подскажите пожалуйста правильно ли понял?
И был ли у кого-то такой опыт?
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: STM32 новичку в ARM что к чему
baghear писал(а):без каких либо изменений в разводке платы и без изменения программы можно заменить STM32F103VET6 на STM32F303VET6.
Есть документ "Переход от микроконтроллеров STM32F1 к STM32F3", ниже прикреплен. Где сказано, что есть некоторые изменения в выводах. Без перекомпиляции программы думаю не получится.
- Вложения
-
- en.DM00073522.pdf
- (835.83 КБ) 289 скачиваний
Re: STM32 новичку в ARM что к чему
Исходники есть и перекомпилировать не вопрос.
Спасибо!!!
Спасибо!!!
Re: STM32 новичку в ARM что к чему
Сижу вот и думаю, а что выходит на ЦАПе МК - меандр с частотой около 1МГц или внутри уже есть подобие фильтра и на выходе "чистый" аналоговый сигнал? Вот бы посмотреть осцилограммы выхода с ЦАП без применения внешних фильтров и емкостной или индуктивной нагрузки... 

Re: STM32 новичку в ARM что к чему
isx, ЦАП с ШИМ не перепутали?
Не знаю как именно устроен ЦАП в STM32, наверное резисторы и ОУ.
Не знаю как именно устроен ЦАП в STM32, наверное резисторы и ОУ.
Re: STM32 новичку в ARM что к чему
Мурик писал(а): Не знаю как именно устроен ЦАП в STM32, наверное резисторы и ОУ.
Опа... А я думал там с ШИМ работает. Надо будет курнуть даташит
Re: STM32 новичку в ARM что к чему
isx писал(а):Вот бы посмотреть осцилограммы выхода с ЦАП
Посмотрите:
http://easystm32.ru/for-beginners/37-dac-stm32
http://chipspace.ru/stm32-dac-1/
http://chipspace.ru/stm32-dac-2/
http://chipspace.ru/stm32-dac-3/
http://embedded-lab.com/blog/stm32-digi ... erter-dac/
А вот апноут Audio and waveform generation using the DAC in STM32 microcontrollers