Только что купил STM32F446, но STM32IDE не делает то, что я ожидаю - PullRequest
0 голосов
/ 22 января 2020
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

  }

Я установил STMCubeMX и построил проект для STM32IDE

В IDE я успешно построил проект, используя: project -> build all

Я ожидаю увидеть значение по умолчанию заставил перестать мигать, учитывая, что пока l oop полностью пустой, но он все еще мигает, как сумасшедший.

1 Ответ

0 голосов
/ 22 января 2020

Попробуй это, совсем минимум, проверишь твои инструменты и умение копировать файл на доску. Я предполагаю, что это плата NUCLEO, да?

.cpu cortex-m0
.thumb
.thumb_func
.global _start
_start:
stacktop: .word 0x20000100
.word reset
.word reset
.word reset
.word reset
.thumb_func
reset:
    b .

build

arm-none-eabi-as flash.s -o flash.o
arm-none-eabi-ld -Ttext=0x08000000 flash.o -o flash.elf
arm-none-eabi-objdump -D flash.elf > flash.list
arm-none-eabi-objcopy -O binary flash.elf flash.bin

check build

cat fla sh .list

Disassembly of section .text:

08000000 <_start>:
 8000000:   20000100
 8000004:   08000015
 8000008:   08000015
 800000c:   08000015
 8000010:   08000015

08000014 <reset>:
 8000014:   e7fe        b.n 8000014 <reset>

Хорошо выглядит именно то, что нам нужно.

Теперь скопируйте командную строку или перетащите флаг sh .bin на виртуальный диск, который монтируется при подключении платы NUCLEO. Это загрузит это в целевой MCU на плате. STM32F446, и должен сбросить его, и вы окажетесь в этом l oop, без мерцающего светодиодного индикатора.

Когда вы делаете более сложные проекты, вы просто расширяете эту bootstrap, программу, связанную (проверено) и скопировано на виртуальный диск fla sh.

Обычно я делаю обновление прошивки конца отладки (stlink плюс флэш-накопитель), когда я получаю новую плату NUCLEO. ST предоставляет основанный на java инструмент, который сам по себе не так часто обновляется, но проверяет доску и, как мне кажется, базу данных на их сайте и может обновить ваш флаг sh. В зависимости от вашей операционной системы у меня были NUCLEO, которые вы можете копировать только несколько раз или один раз, и вам необходимо отключить и снова подключить, для более новых версий прошивки для этих и более новых плат эта проблема практически исчезла. Было бы сказано, что на устройстве не осталось места, отключите / повторно подключите, и все будет в порядке.

Также предоставляя возможности stlink, вы можете использовать openocd или другие инструменты для остановки и проверки устройства, например, с помощью openocd, когда вы lnet на сервере openocd вы можете использовать mdw 0x08000000 20 и проверить запуск пользователя fla sh, чтобы увидеть, совпадает ли он с двоичным файлом, который, по вашему мнению, вы загрузили на устройство. В зависимости от части вы также можете написать / стереть этот fla sh через openocd, но не думайте, что поддержка всегда есть для всех ST или других фирменных частей. Напишите в ram и запустите оттуда (другой запуск, а не таблицу векторов), но для перепрошивки необходимо, чтобы кто-то добавил эту поддержку для каждой детали или семейства в openocd.

Как указано в комментариях, вы не создаете что вы думаете, или вы на самом деле не загружаете программу в FLA sh. Изучите двоичный файл, изучите fla sh, чтобы увидеть, что на самом деле произошло, если что-нибудь. Выше следует избегать всех барьеров на пути к успеху, CMSIS, инструментам IDE, STMCubeMX и т. Д. c. Как только вы сможете добиться успеха, продвигайтесь к середине с обоих концов (между этим тривиальным примером и вашим проектом) и найдите, где настоящая проблема / была. Вы должны иметь возможность, например, использовать ide и все такое для создания двоичного файла, использовать инструменты gnu для проверки этого двоичного файла, hexdump / что угодно, чтобы проверить файл .bin, а затем перетаскивать и удалять из среды IDE для программирования.

...