STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Myp3ik, да хочу разобраться. Можно и по-народному, конечно. Но в чужом коде частенько попадаются подобные конструкции. Хотелось бы увереннее стоять на ногах. Название ветки и вопрос вроде соответствуют. Reflector, значит, если явно не указать sizeof(тип), то единица измерения адреса это байт и не зависит от размерности выражения, тоесть если к адресу 32 битного регистра прибавить 1, адрес сместится на байт, если к адресу 16 битного прибавить 1. то смещение будет тоже 1 байт. Я ожидал смещение адреса согласно размерности регистра. Что не логично.
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Если к _адресу_ прибавить единицу, указатель сместится именно на то количество байт, которое занимает тип данных, на которые указатель, собственно, указывает. На 1 байт - частный случай для char и т.п. однобайтных символов.
А Reflector на ошибку правильно указал. Единицу-то Вы прибавляете не к указтелю, а к обычному uint32_t числу.
А Reflector на ошибку правильно указал. Единицу-то Вы прибавляете не к указтелю, а к обычному uint32_t числу.
Re: STM32 новичку в ARM что к чему
Как правильно написать? Мозги кипят. Изначально я отталкивался от справочника по С. Вот отрывок: "Операции адресной арифметики подчиняются следующим правилам. После выполнения операции
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.
Применительно к указателям на char, операций адресной арифметики выполняются как обычные
арифметические операции, потому что длина объекта char всегда равна 1. Для всех указателей
адрес увеличивается или уменьшается на величину, равную размеру объекта того типа, на который
они указывают. Поэтому указатель всегда ссылается на объект с типом, тождественным базовому
типу указателя." Но потом запутался где-то.
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.
Применительно к указателям на char, операций адресной арифметики выполняются как обычные
арифметические операции, потому что длина объекта char всегда равна 1. Для всех указателей
адрес увеличивается или уменьшается на величину, равную размеру объекта того типа, на который
они указывают. Поэтому указатель всегда ссылается на объект с типом, тождественным базовому
типу указателя." Но потом запутался где-то.
Re: STM32 новичку в ARM что к чему
Что мешает самому объявить как два uint16_t , и не насиловать мозг себе и окружающим?
Re: STM32 новичку в ARM что к чему
Вместе с кубом в новом дизайне появилась и утилитка для прошивки STM32 с незатейливым названием STM32CubeProgrammer. По сути, это бывший STM32 ST-LINK Utility, но в новом оперении.

Каких либо революционных новшеств я пока не увидел, но китайский ST-LINK V2 оно мне прошило до новой версии, чего от старой утилиты было не добиться.

Каких либо революционных новшеств я пока не увидел, но китайский ST-LINK V2 оно мне прошило до новой версии, чего от старой утилиты было не добиться.
- Реклама
Re: STM32 новичку в ARM что к чему
С STM32 ST-LINK Utility поставляется утилита ST-LinkUpgrade которая нормально обновляет китайские ст-линки.a5021 писал(а):китайский ST-LINK V2 оно мне прошило до новой версии, чего от старой утилиты было не добиться.
Re: STM32 новичку в ARM что к чему
До какой версии?
Re: STM32 новичку в ARM что к чему
А он каквсегданевкурсе...
Re: STM32 новичку в ARM что к чему
[uquote="AlDr70",url="/forum/viewtopic.php?p=3512293#p3512293"]После выполнения операции
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.[/uquote]
Здесь имелись в виду операции инкремента/декремента указателя ++ и --
увеличения над указателем, данный указатель будет ссылаться на следующий объект своего
базового типа. После выполнения операции уменьшения— на предыдущий объект.[/uquote]
Здесь имелись в виду операции инкремента/декремента указателя ++ и --
Иван Сусанин - первый полупроводник 
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
не всегдаAlDr70 писал(а):длина объекта char всегда равна 1
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: STM32 новичку в ARM что к чему
До текущей V2.J32.S7.a5021 писал(а):До какой версии?
Re: STM32 новичку в ARM что к чему
Кто терзал тач на STM32F746G-Discovery или ft5336 ft6x06 чипы регистр Gesture ID получалось заставить работать?
Re: STM32 новичку в ARM что к чему
[uquote="AlDr70",url="/forum/viewtopic.php?p=3512140#p3512140"]да хочу разобраться. Можно и по-народному, конечно. Но в чужом коде частенько попадаются подобные конструкции. Хотелось бы увереннее стоять на ногах.[/uquote]Если действительно хотите разобраться в полете инженерной мысли типа #define i_Low (*(uint16_t *)((uint32_t)&(i))), разбейте его на маленькие части, упростите, и склейте упрощение части, и в результате ви получите (uint16_t)i(на конкретном примере). Или же используйте отладчик, и налету посмотрите значения переменних или карту памяти, и сразу все станет ясно и понятно как на картинке. Второй вопрос - если дошло до такого, то кто знает как он используется гдето там в коде.
PS: хороший пример того как простое чтение/запись переменной превратить в настоящий ад для человека, читающего этот код. Стоит ли использовать это дальше - однозначно да, особенно если нужно будет через пол года, год внести какието правки, и снова нужно будет потратить 2 часа времени, чтоб просто понять, что это делает
PS: хороший пример того как простое чтение/запись переменной превратить в настоящий ад для человека, читающего этот код. Стоит ли использовать это дальше - однозначно да, особенно если нужно будет через пол года, год внести какието правки, и снова нужно будет потратить 2 часа времени, чтоб просто понять, что это делает
- Вложения
-
- debug.png
- (61.73 КБ) 474 скачивания
Re: STM32 новичку в ARM что к чему
lazarev, я так и сделал. Разбил этот код на маленькие участки и разбирался с этим. Пока по другому никак. Нехорощо, конечно, когда столкнешься с плохо читаемым кодом. Отладка в железе пока мечта в слезах. Напаял светодиодов на выходе . Не получается и все тут. Много сайтов пересмотрел. Остается обновить STLink, но боюсь напортачить. Нечем будет и прошивать. Мой вопрос в целях учебы, ваши мнения все равно нужны. Практически, конечно, чем проще - тем надежней. За ответы всем спасибо. Есть сайты, где вообще могут тупо игнорировать человека если вопрос не понравился.
Re: STM32 новичку в ARM что к чему
для st-link есть официальная утилита для обновления прошивки - STSW-LINK007, чтото нетак сделать там очень сложно(там 2 кнопки: проверить, обновить - последняя прошивка автоматом грузиться с офф. сайта).
Можно еще поексперементировать с отладкой с помощю официальной IDE AC6 SW4STM32, займет до 30мин. времени(включая скачивание, установку, запуск, создание нового проекта, нажатие кнопки Debug) + можно добавить Куб(гламурний инструмент для создания проектов, если вам нравится путь конфигурирования с помощью кнопочек/картиночек)
Можно еще поексперементировать с отладкой с помощю официальной IDE AC6 SW4STM32, займет до 30мин. времени(включая скачивание, установку, запуск, создание нового проекта, нажатие кнопки Debug) + можно добавить Куб(гламурний инструмент для создания проектов, если вам нравится путь конфигурирования с помощью кнопочек/картиночек)
Re: STM32 новичку в ARM что к чему
Я боюсь, что мой программатор слишком китайский. Он в красном корпусе, написано ST-LINK V2. Ниже STM8 & STM32. Внутрь не лазил. Не знаю какой там чип. Слышал, что некоторые после обновления не работают. Про такие и сказал слишком китайский. Залез внутрь, там 103CB. Скачал утилиту stsw-link007. Ну что, пробую?
Re: STM32 новичку в ARM что к чему
Нормально они обновляются. В случае чего МК можно также прошить через USART или USB в зависимости от его типа.AlDr70 писал(а):Я боюсь, что мой программатор слишком китайский.
Немного о обновлении прошивки. http://purebasic.mybb.ru/viewtopic.php?id=565
И об отладке. http://purebasic.mybb.ru/viewtopic.php?id=564
Re: STM32 новичку в ARM что к чему
Нет, не получилось stsw-link007. Завтра еще на работе попробую.
Re: STM32 новичку в ARM что к чему
Что не получилось? Скачать или обновить прошивку?AlDr70 писал(а):Нет, не получилось stsw-link007
Re: STM32 новичку в ARM что к чему
Обновить не получилось. Теперь и STM32 ST-LINK Utility не видит прграмматор, я в ней прошивку заливал. Чего и боялся.


