Изучение STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

Мурик, если HSE не стартанет там так же зависнет, а не 8МГц останется...
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Изучение STM32

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

В этом коде? http://www.radiokot.ru/forum/viewtopic. ... 6#p2881096
С чего бы ему виснуть?

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

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

Нет, уже говорил где. В самом нижнем участке

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

else
  { /* If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */
  }
Если HSE отсутствует или не готов ,мы попадаем в эту заглушку.Сам переведешь?

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

Re: Изучение STM32

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

Ладно, давайте разберем код и выясним как он работает.
Вначале производится попытка включить HSE и если она неудачная, выполняется пустое условие после else (где ничего не зацикливается) а дальше следует выход из функции. МК не повиснет, а будет работать от HSI с частотой 8 МГц.

В нескольких проектах я модифицировал эту функцию чтобы МК запускался в любом случае на нужной частоте. В main проверял от чего тактируется МК. Если от HSI, то блокировал все программные модули для которых важна стабильность частоты и сообщал о проблеме пользователю, типа "Произошел сбой, перезапустите железку, а если не поможет - несите на ремонт".
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Изучение STM32

Сообщение scorpi_0n »

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

Re: Изучение STM32

Сообщение dosikus »

Именно так. Спасибо scorpiOn
Кстати ,Мурик в 042 и 072 HSI стабильный и используется для тактирования USB. Снова разрыв шаблона ?
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Изучение STM32

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

scorpi_0n писал(а):По хорошему там нужно обрабатывать не только как у вас, отказ кварца при запуске, но и отказ кварца при работе, и попадание в хардфаульт
Это само, собой, но в данном случае речь шла о сбое при запуске HSE.
dosikus писал(а):Кстати ,Мурик в 042 и 072 HSI стабильный и используется для тактирования USB
Не у всех моделей МК RC генератор настолько стабильный. В F030 к примеру, при тактировании от HSI, USART начинал сыпать ошибками на ровном месте...
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

А вот это уже весьма странно , UART то как раз от HSI работает на ура. И да же на F1 а на F0 и подавно. Рой у себя...
Chettuser

Re: Изучение STM32

Сообщение Chettuser »

Ок, удалил.
Последний раз редактировалось Chettuser Сб окт 29, 2016 20:28:26, всего редактировалось 1 раз.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

Chettuser писал(а): А вот этого момента нигде не описано, по крайней мере я не нашёл.
Что не описано? Есть же секвенции переключения. Везде писано, что сначала переводим тактирование на HSI без PLL ...
Chettuser

Re: Изучение STM32

Сообщение Chettuser »

Открыл AN3116_FW_V1.0 Это где про АЦП.
Листаю пример (к сожалению на SPL). В примере Dual_FastInterleaved мне непонятно, почему ADC2:

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

ADC_ExternalTrigConvCmd(ADC2, ENABLE);
Хотя при этом:

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

  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
и ADC1 настроен на запуск по SWSTART.
В RM0008 ничего подобного не нашёл.
pixar
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Чт ноя 29, 2012 08:27:22

Re: Изучение STM32

Сообщение pixar »

ADC1 работает мастером и может запускаться командой или сигналом от таймера или внешним сигналом с ножки,
а ADC2 работает ведомым от АDC1 и запускается на 7-м такте автоматом от сигнала внутренней логики.
Поэтому для ADC2 нужно ставить бит запуска по сигналу .
Chettuser

Re: Изучение STM32

Сообщение Chettuser »

Здрасьте, снова я.
Директива #define вообще позволяет дафайнить выражения?
Пример:

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

#define WR=1  (GPIOA->BSRR=GPIO_BSRR_BS8)
#define WR=0  (GPIOA->BSRR=GPIO_BSRR_BR8)
Хотел простой записи для разгрузки кода:

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

WR=1;
WR=0;
Однако компилятор воспринял дефайн в штыки. Этому эстету, видите ли, "=" не нравится!
По логике - какая ему разница что подставлять? :(
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

Замени на WR_EN и WR_DIS , и то информативный.
Скобки лишние...
Chettuser

Re: Изучение STM32

Сообщение Chettuser »

Уже так переделал:

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

#define WR_1  (GPIOA->BSRR=GPIO_BSRR_BS8)
#define WR_0  (GPIOA->BSRR=GPIO_BSRR_BR8)
Ну неужели нельзя выражение применить?! :evil:
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Изучение STM32

Сообщение scorpi_0n »

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

Re: Изучение STM32

Сообщение Myp3ik »

Можно макросом:

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

#define WR(x)    (GPIOA->BSRR = (x) ? GPIO_BSRR_BS8 : GPIO_BSRR_BR8)
Использование:

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

WR(0);
WR(1);
Иван Сусанин - первый полупроводник :solder:
Chettuser

Re: Изучение STM32

Сообщение Chettuser »

2 вопроса:
1. Где найти не разрозненное описание ассемблера под STM32 (все инструкции, команды и т.д., и т.п.)?
2. Где найти полное описание того же GCC (ARM) со всеми командами?
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: Изучение STM32

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

1. В Programming manual на серию микроконтроллеров на сайте стм. Документ PM0215 для серии F0 (cortex m0), PM0056 для F1 (cortex m3), PM0214 для F4 (cortex m4)
2. На сайте компилятора, поиск по словам GCC Manual. https://gcc.gnu.org/onlinedocs/gcc/ARM- ... RM-Options
Подпись убрал вместе с автором. aen
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Изучение STM32

Сообщение dosikus »

Мурато Мяуконни писал(а):1. В Programming manual на серию микроконтроллеров на сайте стм. Документ PM0215 для серии F0 (cortex m0), PM0056 для F1 (cortex m3), PM0214 для F4 (cortex m4)
На сайте арм...
Ответить

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