Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

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

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

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

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

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

Снимок.JPG

Изменено пользователем ART_ME

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

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

log ниже.

cspycomm.rar

Изменено пользователем ART_ME

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

Изменено пользователем ART_ME

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

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

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

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

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

 

Снимок.JPG

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

 

 

Ссылка на комментарий
Поделиться на другие сайты

Исходные данные проц: 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);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

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

Ссылка на комментарий
Поделиться на другие сайты

и еще вопрос, почему не работает этот код.
у меня стоит драйвер, который параллелит при отправке 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);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк

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

Ссылка на комментарий
Поделиться на другие сайты

Только что, Yurkin2015 сказал:

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

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

Ссылка на комментарий
Поделиться на другие сайты

14 minutes ago, Zombie47 said:

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

Только что, Yurkin2015 сказал:

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

3 minutes ago, Zombie47 said:

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

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

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

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

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, Yurkin2015 сказал:

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

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

12 часов назад, Скептик сказал:

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

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

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

14.07.2020 в 01:38, Yurkin2015 сказал:

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

USART_ClearITPendingBit(USART1, USART_IT_RXNE);

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

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

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

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

Библиотека 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.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Александр Линьков сказал:

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

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

Ссылка на комментарий
Поделиться на другие сайты

45 минут назад, Darth_Vader сказал:

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

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

Цитата

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

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
    • Типа такого: https://aliexpress.ru/item/2044864227.html?sku_id=58855020183
    • поняли неправильно. У ТЛ494 никакой защиты нет, усилители ошибки не защита, они не должны приводить к ложным импульсам. Причем тут "микруха" ?  надо нагружать ВСЁ. До сих пор вообще непонятно о каком ИИП идет речь и сколько у него каналов. Бесполезно схему рисовать? - Помогать так бесполезно. Картина кривая по самое "немогу" продолжаются картинки, снятые через ногу и без цены деления.
×
×
  • Создать...