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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

a5021 писал(а):...

Спасибо, с этим ясно. А как насчет работы с NVIC? Только через функции?

RusikOk писал(а):ооо подобные вопросы не мало воин начали))) https://electronix.ru/forum/index.php?showtopic=131520

Микроконтроллеры ПОКА позволяют работать на самом низком уровне. Если все это переложить на библиотеки и конфигураторы, то в один момент окажется, что производители софта сговорились и выложили доступ к железу только через их драйверы без низкоуровневого доступа к портам и прочему. А это скучно.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
RusikOk
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев
Контактная информация:

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

Сообщение RusikOk »

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

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

Сообщение a5021 »

Zhuk72 писал(а):Спасибо, с этим ясно. А как насчет работы с NVIC? Только через функции?

Так ведь нет их, функций этих. Ну или считай, что нет.

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

__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
{
  NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
}

__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
{
  NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
}


В общем случае, компилятор вместо вызова этих функций в исполняемый код вставит обычную операцию присвоения значений соответствующим регистрам.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Подскажите что сделать что бы в режиме отладки через программатор регистры CYCLECOUNTER, CCTIMER1, CCTIMER2, CCSTEP.
работали. Сейчас в качестве программатора использую stm32f100 Discovery, но там нету вывода SWO. С ним будет работать?
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Скажите, можно ли как-то программно управлять выбором загрузки МК - из флеш или запуск бутлоадера? Ну или на ножку BOOT как-то программно влиять?
Я хочу сделать так, чтоб можно было обновлять прошивку с ПК. Но для этого все равно надо предварительно посадить ножку BOOT на плюс либо городить какие-то внешние транзисторы и цепочки задержки. Можно без этого обойтись?
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

aam писал(а):Но для этого все равно надо предварительно посадить ножку BOOT на плюс либо городить какие-то внешние транзисторы и цепочки задержки. Можно без этого обойтись?

Я делал так: программа загрузчик ищет файл прошивки на карте памяти (или мониторит например uart какое то время), если прошиватся ненадо, то пригаем на основную программу. Если надо прошиватся, то переписываем основную программу и пригаем туда предварительно стерев прошивку с карты памяти.
«И всё-таки она вертится!»
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Ну Вы бутлоадер сами писали, и обновлялись с внешней флешки. А у меня какраз UART в устройстве используется и я предположил, что логичнее всего использовать штатный, уже имеющийся в любом микроконтроллере загрузчик - и память экономлю и писать ничего не надо. Кроме того, помимо программы "Flasher" ST предлагает описание протокола программирования и даже готовые DLLки для компьютера, т. е. в дальнейшем можно даже в свою программу (на ПК), работающую с устройством на STM, вставить кнопочку "Обновить..." и тогда совсем все по-человечески будет выглядеть.
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

Можно при получении команды, пригнуть в свой бутлоадер, переписать программу и вернутся назад. По поводу памяти, то вместе с FAT и дисплеем 320 на 240 он занял меньше 22к. Зато ненадо химичить с внешними элементами.
«И всё-таки она вертится!»
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Сегодня, листая AN2606, наткнулся на ответ:
User can jump to the System Memory Bootloader from his application code using the following entry point: 0x1FFFC518

Вот только почему-то не для всех МК такая фраза указана. Забыли написать?
В частности, в таблице 3 на стр. 21 приведены адреса для всех процев. По идее, надо просто прыгнуть из своей программы на указанный адрес. Но пока не пробовал.

Кстати, ЮСБишные версии F0 "из коробки" грузятся по USB или же USB-bootloader надо зашивать самому? Как ни странно, гугл породил множество сомнений.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

aam писал(а):Вот только почему-то не для всех МК такая фраза указана.
Потому что это не начало загрузчика и в других моделях, адрес будет отличаться.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Говорю же - на стр. 21 таблица с адресами для всех МК. В частности, на основе этой таблицы я предположил, что в младших F10x действительно с этим большая проблема, кроме того, нет встроенного USB-bootloader'а, а в остальных МК, вчастности F0, вроде как и адрес загрузчика явно указан, и по USB они, по идее, должны грузиться сразу после приноса их из магазина.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Кто-нибудь понимает фарси? Пишут персы что-то про Proteus 8.6 SP2, так ведь ни слова не разобрать. :) Видно только, что он научился симулировать STM32F1xx.

СпойлерИзображение
Аватара пользователя
CERGEII
Родился
Сообщения: 5
Зарегистрирован: Чт мар 23, 2017 02:42:53

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

Сообщение CERGEII »

Здравствуйте.
У кого нибудь получалось запустить ADC1 от TIM1_CC1 event ? контроллер stm32f103c8t6
makser
Открыл глаза
Сообщения: 71
Зарегистрирован: Пт апр 24, 2009 11:25:34
Откуда: Rus

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

Сообщение makser »

Модель STM32 в протеусе не полная на данный момент. Например не работает DMA. Дальше не стал копать.

И самое главное, если внимательно изучить эту страничку, то можно получить очень приятный сюрприз.
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

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

Сообщение Alexey_N »

Здравствуйте. Изучаю тут таймеры. Использую STM32F030F4P6. Назначил таймер SysTick ответственным за задержки функции delay, а таймер 14 за вывод информации на дисплей раз в секунду. Проблема в том, что как только я запускаю таймер 14, его обработчик успешно выполняется раз в секунду, но зацикливается, т.е. после выполнения снова вход в него. Никак не найду где проблема. Вот код:
Спойлер

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

void TIM14_IRQHandler( void )
{
    tft_fcolor = ORANGE;
    tft_font = &font_lucida36pt_info;
    cx = tft_drawint( 16, 144, ds3231_get_hours(), 2 );
    cx = tft_drawchar( cx, 144, ':' );
    cx = tft_drawint( cx, 144, ds3231_get_minutes(), 2 );
    cx = tft_drawchar( cx, 144, ':' );
    cx = tft_drawint( cx, 144, ds3231_get_seconds(), 2 );
    tft_font = &font_lucida12pt_info;

    TIM14->SR &= ~TIM_SR_UIF;
}

int main( void )
{

    ....

    NVIC_SetPriority( SysTick_IRQn, 0 );
    NVIC_SetPriority( TIM14_IRQn, 1 );
    RCC->APB1ENR |= RCC_APB1ENR_TIM14EN;
    TIM14->PSC = 47999;                   // APBCLK / 48000 = 1KHz
    TIM14->ARR = 1000;                    // 1s
    TIM14->DIER |= TIM_DIER_UIE;          // Прерывание по обновлению
    TIM14->CR1 |= TIM_CR1_CEN;
    NVIC_EnableIRQ( TIM14_IRQn );

    while( 1 )
    {
        get_all_data;
    }
}
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
AVI-crak
Прорезались зубы
Сообщения: 202
Зарегистрирован: Сб янв 09, 2016 15:51:17
Контактная информация:

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

Сообщение AVI-crak »

Проблема отложенной записи, сначала нужно сбросить флаг - а после выполнять код.
Ну и само выполнение графических функций в прерывании - не самое лучшее решение. Делают немного иначе - в прерывании устанавливают флаг для внешней графической функции. Внешняя функция проверяет флаг когда есть возможность рисовать. Если цикл рисования получится больше времени таймера - будет пропущен один цикл.
Если рисовать в прерывании - гарантированно зависнет.
Аватара пользователя
CERGEII
Родился
Сообщения: 5
Зарегистрирован: Чт мар 23, 2017 02:42:53

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

Сообщение CERGEII »

AVI-crak писал(а):Если рисовать в прерывании - гарантированно зависнет.


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

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

Сообщение a5021 »

makser писал(а):Модель STM32 в протеусе не полная на данный момент. Например не работает DMA. Дальше не стал копать.

Хотя, возможно, стоило.

Изображение

И самое главное, если внимательно изучить эту страничку, то можно получить очень приятный сюрприз.

И как оказалось, для этого совершенно не нужно знать фарси. :) Кстати сказать, там персы еще непонятно что рассказывают про февральский Keil MDK-ARM 5.23 и мартовский IAR Embedded Workbench for ARM 8.10
Вложения
2017-03-25_173831.jpg
(102.14 КБ) 1103 скачивания
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

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

Сообщение Alexey_N »

AVI-crak писал(а):сначала нужно сбросить флаг - а после выполнять код

Пробовал в начало переместить. Так тоже зависает.
AVI-crak писал(а):Делают немного иначе

Благодарю, сделаю таким образом.
AVI-crak писал(а):Если рисовать в прерывании - гарантированно зависнет.

Но все же не совсем понятно, почему так происходит? Ведь рисование выполняется быстрее, чем 1секунда и оно завершится до следующего вызова прерывания, но такое ощущение, что флаг и не сбрасывается/не учитывается...
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

st.com лежит что ли?!
Только сегодня получил "народные" платку и ст-линк, полез на сайт за драйвером, а там облом-с ☹
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Ответить

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