Jump to content
ART_ME

STM32 для чайника

Recommended Posts

а китайский свисток за 2 бакса чем вас всех не устроил?


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Неожиданно забузил J-link, перешитый из китайского ST-Link.

Выглядит это как показано на скрине ниже, но только после запуска программы и не сразу, а через несколько секунд.

После чего bluepill превращается в кирпич и ни на что более не реагирует.

После его реанимации с помощью ST-Link (т.е. неперепрошитого под J-link) загрузка в bluepill осуществляется, но опять только до первого же старта программы.

С ST-Link отладчик запускается и работает без замечаний.

С настройками J-link поигрался, а также заново его перепрошил.

Куда копать дальше?

Снимок.JPG

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее

Попробовал на другом bluepill - тот же результат. :( 

Загрузка программы, как и очистка памяти, с J-Link успешно осуществляется. Проблема только с отладчиком. 

log ниже.

cspycomm.rar

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Барьерные силовые клеммы от Degson – расширение складского ассортимента Компэл

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Подробнее

08.07.2020 в 16:26, elki сказал:

информацией по настройке?

В интернете есть несколько гайдов на эту тему, можете попробовать. Я настраивал себе по mac и там в принципе оказалось все не сложно. Если вам по win то я вообще ничем помочь не смогу.

Единственное что недавно всплыло, что не компилится исходник под l0 серию типа l011d3, но пока руки так и не дошли написать об этом разработчикам. Так что если вы пишите под L0 с малым количеством памяти на хале то скорее всего возникнут проблемы (хотя может и нет)

Share this post


Link to post
Share on other sites

Материалы вебинара «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок»

Опубликованы материалы вебинара, посвященного решениям Analog Devices для гальванической изоляции. На вебинаре рассказали о: технологии гальванической изоляции iCoupler, цифровых изоляторах, технологии isoPower, гальванически изолированных интерфейсах (RS-485, CAN, USB, I2C, LVDS) и многом другом. Материалы вебинара будут интересны разработчикам промышленной автоматики и медицинской техники.

Подробнее

5 часов назад, ART_ME сказал:

Попробовал на другом bluepill - тот же результат. :( 

Поставил KEIL - не работает J-Link!

Нашел исходник старой программы, запустил - на ней J-Link работает. :shok:

Выходит, разница только в содержимом программы?

Никак не пойму, как пользовательская программа может влиять на работу отладчика, когда основная разница в библиотеках, а именно - неработающая создана в Cube. :wall:

Edited by ART_ME

Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Проблема решена, спасибо всем откликнувшимся . :)


Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Ну конечно же настройка Cube! :D

Ну а почему отладчик St-Link работал при запрещенной отладке - хз. 

 

Снимок.JPG


Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта.

 

 

Share this post


Link to post
Share on other sites

Исходные данные проц: STM32L053R8
работаю с HAL
мне надо ногу PA9 сначала подергать вручную, а потом чтоб она была уартом.
я решил делать так:
конфигурирую как ногу на выход:
 

  /*Configure GPIO pins : PA9 */

    GPIO_InitStruct.Pin = GPIO_PIN_9;
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

дергаю ногой:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (582);// это будет 582 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (158);// это будет 158 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (24); // это будет 24 задержка очень чувствительно. ставлю 25 перестает работать.
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (24);// это будет 24 задержка

конфигурирую как уарт:
// ниже конфигурирую пин PA9 опять как уарт
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

отправляю:
HAL_UART_Transmit(&huart1, &start_posilka_abs, 1, 30);  //отправляю 1 байт
принимаю:
HAL_UART_Receive_IT(&huart1, (uint8_t*)buffers_first, 1);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

вообщем вроде все работает кроме одного, перестает работать прием ) перестают работать прерывания на прием.

Share this post


Link to post
Share on other sites

и еще вопрос, почему не работает этот код.
у меня стоит драйвер, который параллелит при отправке RX и TX ну вроде как эхо называется.
поэтому пишу вот так:
HAL_UART_Abort_IT (&huart1);//запрет прерываний по приему.
HAL_UART_Transmit(&huart1, &start_posilka_abs, 1, 30); //отправляю 1 байт
HAL_UART_Receive_IT(&huart1, (uint8_t*)buffers_first, 1);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

каждый цикл срабатывает каллбэк на прием. но я же вроде как запретил прием.

Share this post


Link to post
Share on other sites
39 minutes ago, Zombie47 said:

запретил прием

Функция HAL_UART_Receive_IT() обратно разрешает прерывания по приёму.

Share this post


Link to post
Share on other sites
Только что, Yurkin2015 сказал:

Функция HAL_UART_Receive_IT() обратно разрешает прерывания по приёму.

да это понятно, но я же уже отправил, все , ниче не должно быть в приеме дублироваться.

Share this post


Link to post
Share on other sites
14 minutes ago, Zombie47 said:

ниче не должно

Честно говоря, Вас трудно понять: то какой-то драйвер параллелит эхо, то в каком-то цикле срабатывает коллбэк, то почему-то не должно в приёме дублироваться ...

Одно могу добавить, функция HAL_UART_Receive_IT() не очищает флаги прерывания, а только разрешает их. Поэтому если когда-то UART принял байт, то установится RXNE флаг, что байт принят без всяких прерываний. И этот флаг будет ждать своего часа. Потом вы стартуете эту самую HAL_UART_Receive_IT(), обнаруживаете принятый байт и забираете его.

Share this post


Link to post
Share on other sites
Только что, Yurkin2015 сказал:

Честно говоря, Вас трудно понять: то какой-то драйвер параллелит эхо, то в каком-то цикле срабатывает коллбэк, то почему-то не должно в приёме дублироваться ...

Одно могу добавить, функция HAL_UART_Receive_IT() не очищает флаги прерывания, а только разрешает их. Поэтому если когда-то UART принял байт, то установится RXNE флаг, что байт принят без всяких прерываний. И этот флаг будет ждать своего часа. Потом вы стартуете эту самую HAL_UART_Receive_IT(), обнаруживаете принятый байт и забираете его.

Спасибо теперь понятнее стало почему так работает. Вообщем вопрос в следующем, как запретить поднимать эти флаги прерывания на прием пока я отправляю?

Share this post


Link to post
Share on other sites
3 minutes ago, Zombie47 said:

как запретить

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

Share this post


Link to post
Share on other sites
10 часов назад, Yurkin2015 сказал:

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

Значит так флаг поднялся. Сработало прерывание, и обработчик прерываний? вызвался каллбэк?
А как переконфигурировать сначала в ногу на выход а потом в ногу уарта? я переконфигурирую и у меня впринципе прием перестает работать

Share this post


Link to post
Share on other sites
11 часов назад, Yurkin2015 сказал:

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

такого нет впринципе.

Share this post


Link to post
Share on other sites

Подскажите, что означает "время выборки" в характеристике АЦП. На что оно влияет. В STM32F4xx время выборки может составлять от 3 до 480 тактов.

Share this post


Link to post
Share on other sites

ну сам подумай, на что оно может влиять, если АЦП один, а УВХ емкостного типа


Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
12 часов назад, Скептик сказал:

Подскажите, что означает "время выборки" в характеристике АЦП.

Время выборки - это время в течении которого ключ УВХ соединяет конденсаторный блок АЦП со входным пином. За это время конденсатор УВХ должен успеть зарядиться от источника сигнала с требуемой погрешностью. Ток заряда ограничен внутренним сопротивлением цепей МК от пина (включая ключ УВХ) до конденсатора и внутренним сопротивлением источника сигнала.

Share this post


Link to post
Share on other sites
14.07.2020 в 01:38, Yurkin2015 сказал:

Запретить невозможно, флаг поднимается в железе. Надо RXNE сбрасывать перед стартом приёма пакета, что-нибудь, типа, очистить висящие флаги прерывания 

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

Ну, или сделать приёмник UART RX disabled, тогда приёмные байты будут игнорироваться, и флаги не поднимутся.

где взять эту функцию? USART_ClearITPendingBit
где взять это USART_IT_RXNE у меня этого просто нету.
я понимаю что второе это регистр, но он где то должен быть определен. а у меня нигде не определен и как это сделать я не пойму.

Share this post


Link to post
Share on other sites

Почему не работает  прога? Терминал настроен, с других  прошивок работает.

Библиотека UART подключена.

Компиляция проходит, передачи нет. Среда микробейсик.

program uart

 dim i as word
 
main:
  UART1_Init(9600)
  for i=1 to 1000
  Delay_ms(100)
  UART1_Write(i)
  next i

end.

Share this post


Link to post
Share on other sites
3 часа назад, Александр Линьков сказал:

Почему не работает  прога?

Бро, ты выбираешь очень причудливые способы решения простейших задач. Это я про выбранный язык программирования.

Share this post


Link to post
Share on other sites
45 минут назад, Darth_Vader сказал:

Бро, ты выбираешь очень причудливые способы решения простейших задач. Это я про выбранный язык программирования.

Не бро он нам ))))

Цитата

«Практически невозможно научить хорошему стилю программирования студентов, которые раньше имели дело с Бейсиком; в качестве программистов они умственно покалечены без надежды на восстановление.»
Edsger Wybe Dijkstra, «The Threats to Computing Science».

И я с этим товарищем согласен )))

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Посмотрел как подключить скалер к дисплею.... Я не потяну.... Честно! Не мой уровень. Я хотел по лёгкому соединить дверной видеоглазок с экраном и всё. А теперь вижу, чтобы сделать из дисплея монитор, как раз и нужен этот самый скалер! Но там столько настроек, а я даже многих понятий не знаю! Боюсь, не справлюсь...(((
    • ЛБП 0-30В/0-2А. Многим знакома тема и версия схемы V16y2.  
    • Доброго дня всем. Сделал утепленный бокс для генератора Huter с системой вентиляции и обогрева под управлением ардуинки. Бокс для генератора.  Схема содержит четыре термостата и выводит всю информацию на внешний дисплей. Четвертый термостат при температуре бензобака 45 градусов должен через реле отключать генератор, разрывая цепь питания. Нормально-замкнутые контакты реле подключены последовательно с выключателем зажигания генератора по такой схеме.  Но так как реле питается от БП, который запитан от генератора, то получилась следующая ситуация. Как только контакты реле разрывают цепь питания генератора, на его выходе пропадает напряжение, реле обесточивается и контакты вновь замыкаются, снова замыкая цепь зажигания генератора. Двигатель не успевает остановится, вновь получает зажигание и продолжает работать и на выходе снова появляется напряжение. Ардуинка не успевает перегрузится и считает, что все сделала.( Ну так в программе написал).  Т.е. в таком варианте схема не работает. Надо переделывать. Но никак не соображу, как это сделать. Алгоритм пока вижу такой: 1. Света нет. Нажимаю кнопку, которая фиксируется и замыкает контакты. Запуск разрешен. 2. Завожу генератор, появляется напряжение, начинает работать ардуинка. 3. При температуре бензобака 45 градусов термостат включает реле, которое, каким то образом, разфиксирует кнопку и та размыкает контакты. Генератор отключается.  Финиш. Может будут какие то мысли, как это сделать?  
    • Так он на выходе. Даже если C6 замкнуть там ведь ещё резистор 22 ОМа. Для LM1875 22 ОМа это вообще не нагрузка.
    • Компрессор работает в ванне с маслом. Насколько может увеличиться трение?
    • Ребята, разбавлю маленько тему, хоть и с натяжкой но можно назвать блоком питания, но только питает он сварочную дугу током вплоть до 100А и варит скрутки при желании. Схему и печатку залил в тему по Липину.  
×
×
  • Create New...