Страница 3 из 4
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 15:21:20
dosikus
Мурик, если HSE не стартанет там так же зависнет, а не 8МГц останется...
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 16:32:36
Мурик
В этом коде?
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));
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 18:14:05
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 и калокуба.
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 19:28:32
Мурик
Ладно, давайте разберем код и выясним как он работает.
Вначале производится попытка включить HSE и если она неудачная, выполняется пустое условие после else (где ничего не зацикливается) а дальше следует выход из функции. МК не повиснет, а будет работать от HSI с частотой 8 МГц.
В нескольких проектах я модифицировал эту функцию чтобы МК запускался в любом случае на нужной частоте. В main проверял от чего тактируется МК. Если от HSI, то блокировал все программные модули для которых важна стабильность частоты и сообщал о проблеме пользователю, типа "Произошел сбой, перезапустите железку, а если не поможет - несите на ремонт".
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 19:45:12
scorpi_0n
Так dosikus об этом и говорил, об обработке аварийных ситуаций и исключениях. И что это пример, а не универсальный код на все случаи жизни. По хорошему там нужно обрабатывать не только как у вас, отказ кварца при запуске, но и отказ кварца при работе, и попадание в хардфаульт по превышению частоты. Ведь кварц может не только просто отвалиться, он может дать и завышенную частоту, в результате механических воздействий, например.
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 20:12:52
dosikus
Именно так. Спасибо scorpiOn
Кстати ,Мурик в 042 и 072 HSI стабильный и используется для тактирования USB. Снова разрыв шаблона ?
Re: Изучение STM32
Добавлено: Чт окт 06, 2016 21:39:48
Мурик
scorpi_0n писал(а):По хорошему там нужно обрабатывать не только как у вас, отказ кварца при запуске, но и отказ кварца при работе, и попадание в хардфаульт
Это само, собой, но в данном случае речь шла о сбое при запуске HSE.
dosikus писал(а):Кстати ,Мурик в 042 и 072 HSI стабильный и используется для тактирования USB
Не у всех моделей МК RC генератор настолько стабильный. В F030 к примеру, при тактировании от HSI, USART начинал сыпать ошибками на ровном месте...
Re: Изучение STM32
Добавлено: Пт окт 07, 2016 06:10:11
dosikus
А вот это уже весьма странно , UART то как раз от HSI работает на ура. И да же на F1 а на F0 и подавно. Рой у себя...
Re: Изучение STM32
Добавлено: Сб окт 29, 2016 18:44:20
Chettuser
Ок, удалил.
Re: Изучение STM32
Добавлено: Сб окт 29, 2016 18:48:24
dosikus
Chettuser писал(а): А вот этого момента нигде не описано, по крайней мере я не нашёл.
Что не описано? Есть же секвенции переключения. Везде писано, что сначала переводим тактирование на HSI без PLL ...
Re: Изучение STM32
Добавлено: Вс ноя 06, 2016 21:43:34
Chettuser
Открыл
AN3116_FW_V1.0 Это где про АЦП.
Листаю пример (к сожалению на SPL). В примере
Dual_FastInterleaved мне непонятно, почему ADC2:
Хотя при этом:
Код: Выделить всё
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
и ADC1 настроен на запуск по SWSTART.
В RM0008 ничего подобного не нашёл.
Re: Изучение STM32
Добавлено: Пн ноя 07, 2016 09:43:02
pixar
ADC1 работает мастером и может запускаться командой или сигналом от таймера или внешним сигналом с ножки,
а ADC2 работает ведомым от АDC1 и запускается на 7-м такте автоматом от сигнала внутренней логики.
Поэтому для ADC2 нужно ставить бит запуска по сигналу .
Re: Изучение STM32
Добавлено: Вт ноя 22, 2016 18:24:18
Chettuser
Здрасьте, снова я.
Директива #define вообще позволяет дафайнить выражения?
Пример:
Код: Выделить всё
#define WR=1 (GPIOA->BSRR=GPIO_BSRR_BS8)
#define WR=0 (GPIOA->BSRR=GPIO_BSRR_BR8)
Хотел простой записи для разгрузки кода:
Однако компилятор воспринял дефайн в штыки. Этому эстету, видите ли, "=" не нравится!
По логике - какая ему разница что подставлять?

Re: Изучение STM32
Добавлено: Вт ноя 22, 2016 19:23:33
dosikus
Замени на WR_EN и WR_DIS , и то информативный.
Скобки лишние...
Re: Изучение STM32
Добавлено: Вт ноя 22, 2016 19:59:44
Chettuser
Уже так переделал:
Код: Выделить всё
#define WR_1 (GPIOA->BSRR=GPIO_BSRR_BS8)
#define WR_0 (GPIOA->BSRR=GPIO_BSRR_BR8)
Ну неужели нельзя выражение применить?!

Re: Изучение STM32
Добавлено: Вт ноя 22, 2016 20:12:43
scorpi_0n
Можно, но тогда это будет уже не Си.
Re: Изучение STM32
Добавлено: Вс ноя 27, 2016 19:03:23
Myp3ik
Можно макросом:
Код: Выделить всё
#define WR(x) (GPIOA->BSRR = (x) ? GPIO_BSRR_BS8 : GPIO_BSRR_BR8)
Использование:
Re: Изучение STM32
Добавлено: Пн ноя 28, 2016 22:08:46
Chettuser
2 вопроса:
1. Где найти не разрозненное описание ассемблера под STM32 (все инструкции, команды и т.д., и т.п.)?
2. Где найти полное описание того же GCC (ARM) со всеми командами?
Re: Изучение STM32
Добавлено: Пн ноя 28, 2016 22:27:52
Мурато Мяуконни
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
Re: Изучение STM32
Добавлено: Вт ноя 29, 2016 10:08:27
dosikus
Мурато Мяуконни писал(а):1. В Programming manual на серию микроконтроллеров на сайте стм. Документ PM0215 для серии F0 (cortex m0), PM0056 для F1 (cortex m3), PM0214 для F4 (cortex m4)
На сайте арм...