STM32CubeIDE Разрыв по адресу "xxx" при отсутствии отладочной информации или вне программного кода

Я занят новым оборудованием с микроконтроллером STM32F030C8. Я использую STM32CubeIDE с gcc. Я новичок в разработке микроконтроллеров, и это мой первый проект с ST и их инструментами.

Это очень простая программа, которая просто запускает GPIO. Остальное - это сгенерированный код. Поскольку у меня очень мало опыта в этой области, я надеюсь, что кто-нибудь сможет указать место, куда я могу смотреть. Я подозреваю, что это может быть проблема конфигурации.

Вот код (я удалил все сгенерированные комментарии, чтобы он был немного компактнее):

int main(void)
{
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2); //my code 1
  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2); //my code 2

  while (1)
  {
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
      HAL_Delay(1000);
  }
}

Когда я перехожу через код, он запускает GPIO для "моего кода 1", как только я перехожу к "моему коду 2", это вызовет проблему. Я даже попытался запустить полностью сгенерированную программу без каких-либо изменений, и проблема не устранена. Это был быстрый тест, чтобы увидеть, действительно ли программа работает на MCU. И это так, а также запускает GPIO.

Вывод консоли отладчика:

Temporary breakpoint 1, main () at ../Core/Src/main.c:74
74        HAL_Init();

Program received signal SIGTRAP, Trace/breakpoint trap.
0x1fffecec in ?? ()

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

Консольный вывод:

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.4.0                  
      -------------------------------------------------------------------

ST-LINK SN  : 34FF6E065250343816210143
ST-LINK FW  : V2J36S7
Voltage     : 3.22V
SWD freq    : 4000 KHz
Connect mode: Under Reset
Reset mode  : Hardware reset
Device ID   : 0x440
Device name : STM32F05x/F030x8
Flash size  : 64 KBytes
Device type : MCU
Device CPU  : Cortex-M0



Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_PEkdAh.srec
  File          : ST-LINK_GDB_server_PEkdAh.srec
  Size          : 4944 Bytes
  Address       : 0x08000000 


Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 4]
Download in Progress:


File download complete
Time elapsed during download operation: 00:00:00.627

Verifying ...

Download verified successfully 

Полная ошибка:

Break at address "0x1fffecec" with no debug information available, or outside of program code.

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

Разборка представления отладки

1 ответ

Решение

Код размещен по адресу 0x08000000. В 0x1fffecec нет кода пользователя. Это системная область и, вероятно, загружает системный загрузчик. Это показывает, что контакт BOOTx подключен неправильно.

Другие вопросы по тегам