STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
pvit
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

Re: STM32 новичку в ARM что к чему

Сообщение pvit »

[uquote="jcxz",url="/forum/viewtopic.php?p=3463212#p3463212"]Продуктивность ярко видна по форумам: все форумы просто заполнены стонами пользователей всяких калокубов: "нашёл в нете это. прикостылил к себе, что-то понатыкал там и там - не работает! :(( перетыкал по-другому - опять не работает! :((( спасите-помогите - куда ещё потыкать?? - неделю уже бьюсь, а никак не получается! :(((".
И практически ни одного вопроса от тех, кто читает мануалы и разбирается сам без всяких либ.
Это очень показательно. 8)

И сделать кое-как, по-быстрому не разбираясь - это значит - переделывать потом и ещё и ещё. И в результате потратить много больше времени, чем если прочитать доки и сделать сразу нормально. Так что если важно время и оно ценно - то никаких калокубов однозначно![/uquote]
IMHO вы съезжаете с конкретного примера на разговоры за жизнь. У меня не было проблем с кубом. И изучение его исходников начинать програмирование с чтения RM желания не прибавило. За тех кого вы видели на форумах отвечать не могу, т.к. делюсь собственным опытом.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

pvit, мы все здесь наблюдали ваше "не было проблем" вы кого сейчас лечите?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: STM32 новичку в ARM что к чему

Сообщение oleg110592 »

Посмотрел что там сейчас куб генерит:
Первым делом LATENCY:

Код: Выделить всё

void SystemClock_Config(void)
{

  LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);

  if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1)
  {
  Error_Handler(); 
  }
....

внутри функции работа с регистром напрямую:

Код: Выделить всё

__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
{
  MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
}

и т.д.
imho как пример на подсмотреть пойдет
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3463236#p3463236"]

Код: Выделить всё

void SystemClock_Config(void)
{

  LL_FLASH_SetLatency(LL_FLASH_LATENCY_1);

  if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1)
  {
  Error_Handler(); 
  }
....
[/uquote]Это пять! Они сами сомневаются что смогли изменить один регистр?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение WiseLord »

Конечно сомневаются. Потому что MODIFY_REG изменяет лишь один бит регистра.

Или Вы будете утверждать, что если написать var |= 0x01, то в результате в var будет именно 0x01?

*поправка - не один бит, а сколько задано маской. Так что, возможно, это и лишнее.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

WiseLord, правильно что сомневаетесь , это начало на пути к просветлению.
Аватара пользователя
philosoraptor
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

Re: STM32 новичку в ARM что к чему

Сообщение philosoraptor »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3463327#p3463327"]если написать var |= 0x01, то в результате в var будет именно 0x01?[/uquote]

Едва ли товарищ выше, к примеру, умеет эндить и орить, так что |= ему ничего не скажет. А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003, совершенно бесполезно.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

philosoraptor, ты только что обгадился по полной и все из-за абсолютной невнимательности...
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Oxford »

Есть стандартные файлы кода запуска. В файлах есть комменты обьясняющие че по чем зачем и почему. О чем базар?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

philosoraptor писал(а):А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003
Разве не одно и тоже?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение ARV »

Мурик писал(а):Разве не одно и тоже?
ну как бы для 32-битной платформы не одно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

Тип переменных нам неизвестен. Может он uint16_t.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3463268#p3463268"]Это пять! Они сами сомневаются что смогли изменить один регистр?[/uquote]
Это писали особо недоверчивые индусы. Сомневаться им приходится во всем, включая даже то, что регистры непосредственно после подачи питания находятся в их дефолтных состояниях.
Вот кусок стартапа, функции, которая вызывается до main():

Код: Выделить всё

void SystemInit(void)
{
  /* Reset the RCC clock configuration to the default reset state ----------*/
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001U;


HSION там уже в единице, но индусы считают, что лишний раз не повредит. Ну а там где один лишний раз, то и другой уже лишним точно не будет:

Код: Выделить всё

void SystemClock_Config(void)
{

  LL_FLASH_SetLatency(LL_FLASH_LATENCY_0);

  if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_0)
  {
  Error_Handler(); 
  }
  LL_RCC_HSI_Enable();

   /* Wait till HSI is ready */
  while(LL_RCC_HSI_IsReady() != 1)
  {
   
  }
  LL_RCC_HSI_SetCalibTrimming(16);

  LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);

  LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);

  LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSI);

   /* Wait till System clock is ready */
  while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSI)
  {
 
  }


Все вышеперечисленные действия инитят регистры в их дефолтовые значения, которые и до этого те же самые значения имели. И как можно видеть, LL_RCC_HSI_Enable() пытается взвести изначально взведенный бит HSION уже во второй раз.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Вообще, можно придумать ситуации когда прошивка стартует с недефолтными регистрами.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Например?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

Например управление передается из бутлодера.
Иван Сусанин - первый полупроводник :solder:
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Если основная прошивка стартует с перекрученными черти как регистрами бутлоадером, то это плохой, негодный бутлоадер. Но даже в этом крайнем случае очень сложно объяснить необходимость устанавливать бит HSION дважды подряд.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Результат работы процедуры инициализации не должен зависеть от предсостояния. Ошибочное, кривое или сбойное оно было - код должен работать. Вот как-то так.
Аватара пользователя
philosoraptor
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

Re: STM32 новичку в ARM что к чему

Сообщение philosoraptor »

[uquote="Мурик",url="/forum/viewtopic.php?p=3463445#p3463445"]
philosoraptor писал(а):А что-то типа var &= ~0xfffc его и вовсе в ступор введет. Причем объяснять ему, почему не var &= 0x0003
Разве не одно и тоже?[/uquote]
А вы попробуйте сделать и так и эдак, и проверьте результат.

Добавлено after 8 minutes 33 seconds:
[uquote="a5021",url="/forum/viewtopic.php?p=3463460#p3463460"]

Код: Выделить всё

RCC->CR |= (uint32_t)0x00000001U;
[/uquote]

Вот же он, ярчайший пример быдлокодинга и незнания азов. Сферический в вакууме. Битмаски? Не, не слыхали. И ведь индусы искренне верят, что приведение типов и/или добавление магического U заставят компайлер считать нули перед единицей.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3463598#p3463598"]Результат работы процедуры инициализации не должен зависеть от предсостояния. Ошибочное, кривое или сбойное оно было - код должен работать. Вот как-то так.[/uquote]
Не, "как-то так" не пойдет. Фантазмы должны быть ошеломительными, чтобы пресекать всякие вопросы и оправдывать любую белиберду.

Типичный сценарий разработки всегда включает появление из неоткуда кривейшего и горбатейшего загрузчика неизвестных свойств, чью врожденную убогость блестяще исправляет гениальнейший код из под индусов. Ограниченной дееспособности пользователь куба, страдая когнитивными расстройствами всех видов, не в состоянии понять ни байта ни в чем и только неизвестный индийский гений обширно подстелил соломки во всех темных уголках автоматически генерируемого кода, чтобы несчастный не убился насмерть в первую же секунду.

Ага. Все так обычно и бывает.
Ответить

Вернуться в «ARM»