Jump to content
ChaNger16ua

Проблемы с загрузкой и отладкой платы STM32F103C8T6

Recommended Posts

Здравствуйте, недавно начал заниматься stm32, до этого занимался только Arduino/AVR. Купил себе плату с чипом STM32F103C8T6, и программатор ST-Link v2.

Сразу же начал искать себе подходящую IDE, остановил свой выбор на CoIDE. И когда начал, проблем с загрузкой, и компиляцией программы не было, управлял всем через регистры, и радостно мигал светодиодом, но когда решил проверить как работает отладка, столкнулся с проблемой. При запуске отладки проект компилировался и загружался, но сама отладка выдавала ошибку: Cannot execute this command without a live selected thread. Перерыл весь интернет, ничего не помогло. 

Взял уже пример с миганием светодиода из библиотеки GPIO, поменял название функции на int main, поставил return, и дописал строку которая включает SWD. Вот сам код:

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"


int main(void)
{
    int i;
    /* Initialize Leds mounted on STM32 board */
    GPIO_InitTypeDef  GPIO_InitStructure;
    /* Initialize LED which connected to PC6,9, Enable the Clock*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    /* Configure the GPIO_LED pin */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable  , ENABLE);

    while (1)
    {
        /* Toggle LEDs which connected to PC6*/
        GPIOC->ODR ^= GPIO_Pin_13;


        /* delay */
        for(i=0;i<0x100000;i++);
    }

    return 0;
}

Запускаю, и ничего та же ошибка.

После решил сам все не делать, а создать проект в STM32CubeMX. Делал по многим примерам(код кидать не буду он стандартный). Правильно настраивал порты, в пинах sys выставил значение Serial Debug, выставил тактирование. Кидаю проект, все правильно выставляю(папки Drivers, Src, Inc), потом в конфигурации во вкладке компилятор, выставляю переменные. Компилирую, выдает такую строку:

Program Size:
      text	   data	    bss	    dec	    hex	filename
         0	      0	      0	      0	      0	NewMain.elf

тоесть программы по сути нет, это в настройках линкера во вкладке options стоит галочка на: Use memory layout from memory window.

Окей знаю что линкер просто не подключает нужные библиотеки и файлы, поэтому программа ничего не весит.

Снимаю галочку, ставлю Scatter file, который сделала STM32CubeMX, запускаю.

Дальше выдает ошибку, но не компиляции, вылазит окно Problem Occurred, нажимаю details, там такое:

An internal error occurred during: "Building".
String index out of range: -1

И все, компиляция прервана. НО если очистить проект, и потом сбилдить(либо ребилд), то работает, но заветный светодиод не моргает.

Дальше касательно отладки, в нее не могу зайти, потому что при отладке проект компилируется, но я его не могу скомпилировать, могу перебилдить, и поэтому отладка тупо не включается, но есть я очищу проект, то отладка просто не работает.

 

P.S перемычки на плате менял, как угодно, и с одной прошивкой и другой, не работает. Пытался освоить uVision, не пошло, куча проблем с ней, хотя уже и по гайдам делал(по нескольким), и сам все пытался. Но в итоге как не работало, так и не работает.

Поэтому прошу помощи.

Share this post


Link to post
Share on other sites

Это с Keil-ом то что-ли не пошло?

Вы лучше затрите эту строчку поскорее из поста, а то все сильно удивятся

Лично я не считаю кокос нормальным средством программирования и отладки для STM. Нахлебался с ним. Глюк на глюке, да еще и тормоз. Но это к теме не относится. Средства кодописания тут в разделе уже раз 50 обсосаны и разобраны на атомы.

Edited by mail_robot

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

Share this post


Link to post
Share on other sites
3 часа назад, ChaNger16ua сказал:

остановил свой выбор на CoIDE.

Очень напрасно. Крайне советую выбрать Keil. Весь функционал работает "из коробки" и никаких танцев с бубном не требуется. Еще более рекомендую забыть про бред под названием SPL. Конечно, если нужна стабильная и предсказуемая работа МК...

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Умный и безопасный дом от STMicroelectronics – строим вмеSTе!» (23.06.2021)

Приглашаем 23/06/2021 всех желающих принять участие в вебинаре, посвященном проектированию и разработке систем умного дома на базе компонентов STMicroelectronics. Экосистема продукции STMicroelectronics включает в себя как электронные компоненты, так и средства разработки, готовые стеки протоколов и законченные примеры кода. Предлагаемые ресурсы позволят разработчику легко построить каркас системы и быстро создать прототип своего приложения. На вебинаре также расскажем о беспроводных интерфейсах – ведь благодаря поддержке стандартов BLE и ZigBee разработчики смогут при необходимости интегрировать устройства сторонних производителей и создавать открытые системы.
Подробнее

4 часа назад, ChaNger16ua сказал:

дописал строку которая включает SWD

Он включен по умолчанию.

Share this post


Link to post
Share on other sites

Тактовые кнопки Panasonic - высококачественная коммутация в миниатюрном исполнении

Panasonic, один из мировых лидеров по производству высококачественных электромеханических компонентов, и Компэл представляют масштабное расширение складской программы. В настоящее время на складе Компэл доступны ведущие серии SMD-тактовых переключателей Panasonic в миниатюрных корпусах. Линейка тактовых кнопок Panasonic отличается многообразием компактных переключателей различных типоразмеров, форм штока и выводов. Переключатели отвечают важнейшим требованиям в ответственных применениях.

Подробнее

на загрузку да, а на отладку? Чет по моему по умолчанию эти лапы не AFIO конфигурируются


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

Share this post


Link to post
Share on other sites

Использование интеллектуальных силовых ключей PROFET в системах электропитания современных автомобилей

Современные автомобили, использующие полуавтоматизированные и автоматизированные системы вождения, отказываются от централизованных систем распределения питания в пользу децентрализованных. При этом современные системы контроля электропитания и обеспечения его безопасности требуют замены электромеханических коммутаторов и предохранителей на быстродействующие ключи на базе MOSFET со встроенными микроконтроллерами и возможностями диагностики – такие как предлагаемые компанией Infineon интеллектуальные силовые ключи PROFET.
Подробнее

5 минут назад, mail_robot сказал:

на загрузку да, а на отладку?

Хз, в Keil точно ничего дополнительно конфигурировать не надо и лапы именно на SWD и JTAG настроены. Работал с 1, 2, 3 и 4 серией, нигде доп настройки не нужны были.

Share this post


Link to post
Share on other sites

Как то ни разу не сподобился проверить...

Но от того что еще раз пропишешь в коде, наверное хуже то не станет


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

Share this post


Link to post
Share on other sites

Да МК то пофигу. Если SWD включен, то используется и для прошивки и для отладки. JTAG не пользовался никогда, по нему не скажу.

Share this post


Link to post
Share on other sites
В 26.06.2019 в 12:26, ChaNger16ua сказал:

/////////////////////////

Спасибо за ответы, вроде установил Keil, и получается работать

Edited by Falconist

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...

  • Сообщения

    • Спасибо большое, это уже что-то понятное! Но мне бы схемку хоть карандашом, как это собрать с переключателем... 
    • Вот как раз формула вычисляет корень из среднеквадратичного значения. Но вот с ней "дебет с кредитом" не сходится. Дополнительно для проверки у меня к примеру есть светодиодная лампа на 20Вт мощности и Зарядник от мобильного устройства приблизительно 69Вт мощности. _____________________________________________________________ 1) Я выкидываю расчёт среднеквадратичного значения из программы и снимаю значения АЦП напрямую, далее я добавляю конденсатор (сглаживающий), он и будет работать вместо формулы, сглаживать и приводить к единому числу все пульсации. (т.е. повторюсь за место формулы работает, конденсатор) То при калибровке такой схемы: - У меня все лампочки по потреблению тока имеют почти-что такой же результат, как и на тестере "плюс" или "минус", расхождения есть но незначительные. - Дополнительно если я подключаю светодиодную лампу, у меня расчётная мощность получается (~18-19 Вт), что почти что права на этикетке лампы написано (20Вт), - Дополнительно подключаю зарядник от мобильника, который даёт такие импульсы большие (на графике выше показаны эти импульсы), схема с конденсатором показывает (~59-65 Вт) - что тоже укладывается в пределы написанного на этикетке зарядника, а именно (230В, 0,3А, 69Вт). _____________________________________________________________ 2) Я подключаю АЦП напрямую (выкидываю конденсатор с резистором), и подключаю расчёт среднеквадратичной формулы. И тут и начинается странность.  При калибровке такой схемы: - Все лампочки также по потреблению тока имеют почти-что такой же результат, как и на тестере "плюс" или "минус", расхождения есть но незначительные. - Светодиодная лампа, у меня расчётная мощность получается (~30 Вт), что уже гораздо страннее, - Зарядник от мобильника, показывает (~600 Вт), что ещё более страннее ибо столько зарядка мобильника потреблять не может.   Судя по расчётам формулы, при подключении обычных ламп накаливания, где сигнал с датчика тока имеет синусоидальный сигнал, среднеквадратичная формула работает отлично, но стоит только подключить устройства с импульсным блок питанием, как формула перестаёт работать и показывает какие-то другие значения. И здесь конденсатор включенный в цепь имеет куда более правдивые показания, чем формула. Но всё же, и там и там, и в схеме без формулы, но с конденсатором, ни в схеме без конденсатора, но с формулой, на графиках видна нелинейность напоминающая параболу. 
    • Красные провода - рабочая обмотка, синие - пусковая. Фазировка пусковой относительно рабочей определяет направление вращения. Пусковая включается через конденсатор. Один включен постоянно, второй на момент пуска, с помощью реле или свециального выключателя. Термопредохранитель в разрыв любого сетевого провода.
    • Здравствуйте! Есть мотор от мясорубки нужно восстановить схему подключения. 1). По схеме что на табличке мотора, разобраться с подключением реверс-переключателя не получилось. На табличке указано что к обоим проводам цвета "BROWN" подключен тепловик/предохранитель, а по факту один из проводов цвета "BROWN" был напрямую подключен к клемме входящего 220В. кабеля. 2). Схема что указана в инструкции от мясорубки вообще без обозначения цветов провода, а 12контактный реверс/переключатель просто не подходит к такому подключению, так как если соблюдать по схеме номера контактов он просто по очереди размыкает контакты питания. Моя схема ОДНОФАЗНАЯ! Помогите пожалуйста разобраться!
    • Это усилитель в клипе? Очень интересно....Под ламповый звук косит?
    • Да, я внимательно посмотрю на ваши подсказки.
    • Как знать...Можно и тут нагородить, не знамо ...и не одну.
  • Similar Content

    • By dima040891
      Приветсвую!
      Кто ни будь работал с микросхемой STLED316S?  Это драйвер семисегментонго индикатора.
      Можете привести минимальный кусок кода который выводит любую цифру на дисплей. Из документации не пойму как с ней работать...
      На форумах инфы почти нет. Из того что есть тоже толку мало. Буду рад любой инфе по этой микросхеме.

      Ещё правильно же понимаю биты по SPI передаются младшим вперёд, а такты нужно передавать инверсные?

      В качестве МК применяю STM32.
    • By Михаил Дементьев
      Всем добрый день!
      Столкнулся с такой проблемой. Собрал самодельный igbt, и все хорошо работает, пока подаю на затвор напряжение с источника. Далее через ЦАП подключил stm32f100 к затвору и попытался управлять выходным током биполярника. В итоге вот что получилось: тестирую stm32 без igbt, ЦАП стабильно выдаёт то, чем я прошил микроконтроллер, но как только stm32 подключаю к затвору igbt, то stm32 перестаёт работать, в чем может быть проблема?
    • Guest Тот самый чайник
      By Guest Тот самый чайник
      Добрых времени суток, недавно начал изучать микроконтроллер STM32. Уже собрал контроллер в виде схемы, но не могу понять пару моментов а именно с подключением к нему датчиков. (буду благодарен если картинками кинете ещё).

      Микроконтроллер я как понял он питается и управляется с помощью 3.3В а 5В нежелательно,  поскольку мк может сгореть. Хотя многие говорят можно подать, а в дотушите нету упоминания, можете разъяснить этот момент. (знаю можно устранить с помощью подтягивающего резистора, но всё же, хочу знать от мнение асов и кто уже просветлён).

      Есть датчики температуры, уровень жидкости и её температура, скорости вращения. Их я как понимаю можно подключить на МК через усилитель, ФНЧ и комутатор аналоговых сигналов а затем на МК пустить. (питание через гальваническую развязку сделаю), так можно делать? Интересует схема этих датчиков которые я перечислил, желательно для промышленности поскольку не могу выбрать а какие-то не могу найти потому что не знаю что поставить. 

      Ещё читал что аналоговые датчики можно подключать напрямую из датчиков к МК (через делитель). Что скажите?

      И такой момент, на МК есть вводы и выводы. Т.е. программно в них можно прописать какой пин будет вводом а какой выводом? Дискретным или аналоговым, можете рассказать? Или на статью с разъяснением скиньте.

      Пока что так.

       
    • By admin
      В видео поговорим об энергоэффективности микроконтроллеров. Сравним потребление в режима сна arduino, blue pill с STM32F103 и представителя новой линейки энергоэффективных микроконтроллеров от st — STM32L552.
      Подробную информацию об линейке L5 можно найти тут: https://www.compel.ru/lib/143383
      Пи тест часть 1: https://youtu.be/ozu1IUjH1_Q
      Пи тест часть 2: https://youtu.be/uLOWYE-JJpA
    • By Стальной
      Доброго времени суток!
      Неделю не могу запустить DCMI на STM32F407VET6. 
      Работаю через HAL, инициализация кубом. К МК подключена камера OV7670. Камера дает картинку 640х480, и такое изображение мне негде хранить. Поэтому через фичу CROP хочу вырезать картинку 160х128 из центра под имеющийся экран.
      Ниже примерный код, без настройки камеры. Камера тактируется от 16 МГц MCO. Сигналы поступают на выводы МК, посмотрел осциллографом. У камеры есть некоторые настройки, которые тут в коде не показал, так как они влияют только на представление данных, но не на алгоритм захвата данных.
      /* USER CODE BEGIN PV */ uint16_t DCMI_data[20480] = {0}; //128*160=20480 words uint32_t ptr; /* USER CODE END PV */ //тут еще код куба, пропущу его int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_DCMI_Init(); /* USER CODE BEGIN 2 */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); //снять ресет с матрицы ptr = (uint32_t)(&DCMI_data[0]); HAL_Delay( 500 ); //начать резать с 512 клока строки (256 пиксель), начать резать с 160 строки //захватить 256 клоков (128 пикселей), захватить 160 строк HAL_DCMI_ConfigCrop(&hdcmi, 512, 160, 256, 160); HAL_DCMI_EnableCrop(&hdcmi); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT, ptr, 10240); //однократный захват, 10240 тетрад, 20480 слов, 160*128=40960 пикселей HAL_Delay(1500); } /* USER CODE END 3 */ } В результате в буфере ничего не появляется, DMA туда ничего не кладёт, проверил. Если не вызывать функцию EnableCrop, но какие-то данные появляются, но на экран их корректно отобразить не получается. Также пытался в камере обрезку включить, а не в МК - снова нет данных. Пробовал разные частоты тактирования матрицы давать - без разницы. Отладчиком увидел, что бит EN в регистре конфигурации потока  DMA не снимается, как будто DMA не получал запросов на транзакции. Помогите, пожалуйста, разобраться.
      Проект на яндексДиске
×
×
  • Create New...