Настраивать
У меня есть минимальная тестовая плата STM32F103C8T6 (см. STM32F103C8T6 ).
И я использую ссылку ST, как на картинке ниже.
Я установил System Workbench для Eclipse. Я создал свой собственный проект (C++, пустой проект, набор инструментов: Ac6 STM 32 MCU GCC), серия: STM32F1, Mcu: STM32F103C8Tx, ядро: ARM Cortex-M3, пакет: LQFP48, оперативная память: размер 0x5000, ПЗУ памяти: размер 0x10000 .
Код
Код содержит файл system_stm32f10x.c, сгенерированный (или автоматически включенный) средой IDE.
Программа компилируется нормально:
* @file main.c
* @author Ac6
* @version V1.0
* @date 01-December-2013
* @brief Default main function.
******************************************************************************
*/
#include "stm32f10x.h"
#include <stm32f10x_rcc.h>
void delay(int counter)
{
volatile int i;
for (i = 0; i < counter * 10000; i++) {}
}
int main(void)
{
GPIO_InitTypeDef gpio;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_13;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &gpio);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
while (1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_13); // LED ON
delay(400);
GPIO_ResetBits(GPIOC, GPIO_Pin_13); // LED OFF
delay(400);
}
}
Загрузить с помощью OpenSTM32
Когда я создаю конфигурацию «Выполнить» (без изменений) и выбираю «Выполнить», я получаю следующую ошибку (в консоли):
Open On-Chip Debugger 0.10.0-dev-00302-gc211ca5-dirty (2017-07-03-10:41)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 950 kHz
adapter_nsrst_delay: 100
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748
Info : using stlink api v2
Info : Target voltage: 3.231135
Info : STM32F103C8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints
adapter speed: 950 kHz
Error: timed out while waiting for target halted
TARGET: STM32F103C8Tx.cpu - Not halted
in procedure 'program'
in procedure 'reset' called at file "embedded:startup.tcl", line 478
in procedure 'ocd_bouncer'
** Unable to reset target **
shutdown command invoked
Соединения
Схема
Файл конфигурации отладки
# This is an F103C8T6_Simple board with a single STM32F103C8Tx chip
#
# Generated by System Workbench for STM32
# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s)
source [find interface/stlink.cfg]
set WORKAREASIZE 0x5000
transport select "hla_swd"
set CHIPNAME STM32F103C8Tx
# Enable debug when in low power modes
set ENABLE_LOW_POWER 1
# Stop Watchdog counters when halt
set STOP_WATCHDOG 1
# STlink Debug clock frequency
set CLOCK_FREQ 4000
# use hardware reset, connect under reset
# connect_assert_srst needed if low power mode application running (WFI...)
reset_config srst_only srst_nogate connect_assert_srst
set CONNECT_UNDER_RESET 1
source [find target/stm32f1x.cfg]
Экран запуска конфигурации
Обновлять
Я мог отправить программу через утилиту Link, см. ниже. Я не вижу мигающего света, но, возможно, программа неверна.
Однако этот путь не очень удобен (и я не вижу ни одной запущенной программы). Кроме того, я до сих пор не могу отлаживать этот способ.
ЗАДАЧА РЕШЕНА
Смотрите мой ответ (чтобы помочь другим с аналогичной проблемой)
Всем большое спасибо за ответы и многочисленные полезные замечания.
Сделанные соединения: STlink SWDIO контакт 2 -> контакт 7 JTAG STlink GND контакт 4 GND -> контакт 4 JTAG STlink SWCLK контакт 6 -> контакт 9 JTAG STlink 3.3V контакт 8 -> контакт 2 JTAG
Сброс не происходит таинственным образом. На самом деле это прямое подключение к контакту сброса MCU от jtag/swd, которого нет в вашей конфигурации.
редактировать: Это было неправильно. См. комментарий Криса.
* обновлять *
Сброс эмуляции требует правильных параметров конфигурации openocd, которые в настоящее время установлены для аппаратного сброса. «srst» — это сброс системы, а не эмуляция. Также внимательно прочитайте руководство на github: автор делает сброс вручную, нажимая кнопку сброса перед выдачей команды сброса и отпуская в течение периода ожидания сброса openocd.
Также удаление параметра «сброс при подключении» из файла конфигурации может облегчить такой ручной сброс.
Так что решение - либо ручной сброс, либо коррекция параметров для эмуляции (если она есть на вашем чипе; текст выше пришлось вычеркнуть из-за концептуальной ошибки, не знаю, есть ли она у вашего чипа) или адаптация вашего stlink'а сброс сигнала в плату.
Проблема решена.
Это можно исправить, перейдя на вкладку «Конфигурации запуска», вкладку «Отладчик», вкладку «Отладчик», «Настройка режима», «Режим сброса: изменить на сброс системы программного обеспечения».
Основная проблема заключается в том, что мой STLink имеет версию 2, а не версию 2.1, и у него нет аппаратного сброса.
Похоже, что ваш конфигурационный файл OpenOCD имеет неверный номер ProductID. Этот номер относится к используемому вами адаптеру клонирования ST-LINK, а не к вашему конкретному микроконтроллеру.
Посмотрите это в консоли OpenOCD:
Информация: STLINK v2 JTAG v17 API v2 SWIM v4 VID 0x0483 PID 0x3748
Информация: vid/pid не идентичны: 0x0483/ 0x374B 0x0483/0x3748
Обратите внимание на разницу, которую я выделил. Иногда трудно отличить восьмерку от четверки!
Поскольку клоны ST-LINK должны работать одинаково, сомневаюсь, что это ваша проблема. Но я оставлю информацию здесь, если это кому-то поможет.
-f filename.cfg
. Скорее всего, он заканчивается на .cfg, но может быть и другим. Кроме того, попробуйте использовать конфигурацию отладки вместо конфигурации запуска.Для работы с ARM-чипами на Eclipse я сам использую https://gnu-mcu-eclipse.github.io/ .
Конфигурация для STM32F103C8T6 с использованием флешки ST-Link с использованием этого плагина eclipse будет
-f interface/stlink-v2.cfg -f target/stm32f1x.cfg
PID 0x374B предназначен для ST-Link V2.1. Китайские флешки ST-Link V2. Значит, вы выбрали не тот интерфейс отладчика. Поскольку вы используете другой подключаемый модуль eclipse, я не знаю, где и как его настроить, но взгляните на выбранный интерфейс отладчика.
Крис Стрэттон
Мишель Кейзерс
Бенс Кауликс
Турбо Дж
Мишель Кейзерс
Мишель Кейзерс
Мишель Кейзерс
Мишель Кейзерс