Не могу помигать диодом на STM32F103C8Tx из STM32CubeIDE
Добавлено: Сб мар 26, 2022 23:37:39
Привет, народ.
Купил себе на пробу STM32F103C8T6 (BluePill) с программатором STLink-V2. Вот что о нем рассказывает st-info --probe:
Установил среду STM32CubeIDE Version: 1.8.0 Build: 11526_20211125_0815 (UTC).
И попытался собрать и запустить программку мигания светодиодом. Сделал новый проект для STM32F103C8Tx, настройки брал из вот этого видео: https://www.youtube.com/watch?v=e_NSqz5P8Qk
По-сути сгенерировался дефолный проект для STM32F103C8Tx, частота настроена на 72MHz, активирован пин PC13 на режим Output. В коде в бесконечный цикл вписаны команды:
По ходу попыток запуска, вначале STM32CubeIDE сказал, что прошивка устарела, и надо обновить. Я согласился, но пришлось пару раз вставить-вытащиить программатор в USB, так как была ошибка:
Прошивка залилась, а в сети нашел инфу что если обновление прошивки предваряется такой ошибкой, то это нормально.
Потом пришлось подредактировать файл stm32f1x.cfg, так как при запуске была ошибка:
Эту ошибку убрал по инструкции: https://stackoverflow.com/questions/587 ... -st-device, заодно отладку переключил с STLink GDB Server на STLink OpenOCD (сам GDB, естественно, установлен и работает, обычный C/C++ код через него отлаживается).
В результате, после устранения предыдущей ошибки, стали появляться другие ошибки:
Насколько я понял, эти ошибки возможны из-за того, что программа либо не запускается, либо крашится уже на самом микроконтроллере по причине неправильной настройки диапазонов адресного пространства или какой-то периферии.
Тогда я решил снова сделать новый проект, все повторил заново, и на этот раз почти получилось. Во всяком случае, явных ошибок в логе запуска нет. Но светодиод не мигает, отладка не работает:
Я пробовал собрать и запуститься в режиме релиза (переткнул и конфигурацию и билд на Release), но почему-то при запуске RUN все равно IDE пытается запустить дебаггер, ей это не удается, лог запуска все тот же.
Дальше я уже не знаю что делать. Прошу посоветовать что где еще надо докрутить, чтобы помигать светодиодом.
* * *
UPD: Иногда запуск почему-то происходит по-другому, хотя ничего ни в коде ни в конфигурации не меняю. Запуск сопровождается появлением окна с ошибкой:Хотя, как написано выше, такая ошибка была, и верификация устройства отключена (в начало файла stm32f1x.cfg добавлена строка set CPUTAPID 0).
Выхлоп запуска при этом немного другой, строки с Info те же самые, но в конце такие ошибки:
Вот как выглядит скриншот: https://ibb.co/JvyD2HK
Купил себе на пробу STM32F103C8T6 (BluePill) с программатором STLink-V2. Вот что о нем рассказывает st-info --probe:
Код: Выделить всё
Found 1 stlink programmers
serial: 132014026315303030303032
openocd: "\x13\x20\x14\x02\x63\x15\x30\x30\x30\x30\x30\x32"
flash: 65536 (pagesize: 1024)
sram: 20480
chipid: 0x0410
descr: F1 Medium-density deviceИ попытался собрать и запустить программку мигания светодиодом. Сделал новый проект для STM32F103C8Tx, настройки брал из вот этого видео: https://www.youtube.com/watch?v=e_NSqz5P8Qk
По-сути сгенерировался дефолный проект для STM32F103C8Tx, частота настроена на 72MHz, активирован пин PC13 на режим Output. В коде в бесконечный цикл вписаны команды:
Код: Выделить всё
while (1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}Код: Выделить всё
st-link is not in the DFU mode. Please restart it.Потом пришлось подредактировать файл stm32f1x.cfg, так как при запуске была ошибка:
Код: Выделить всё
linux gdb ST-LINK: Could not verify ST device! Abort connection.В результате, после устранения предыдущей ошибки, стали появляться другие ошибки:
Код: Выделить всё
Error: STM32F103C8Tx.cpu -- clearing lockup after double fault
Polling target STM32F103C8Tx.cpu failed, trying to reexamineТогда я решил снова сделать новый проект, все повторил заново, и на этот раз почти получилось. Во всяком случае, явных ошибок в логе запуска нет. Но светодиод не мигает, отладка не работает:
Код: Выделить всё
Open On-Chip Debugger 0.11.0+dev-00438-ga75fc63 (2021-11-03-15:26)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J39S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 2.427853
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : clock speed 4000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x2ba01477
Info : STM32F103C8Tx.cpu: Cortex-M3 r2p1 processor detected
Info : STM32F103C8Tx.cpu: target has 6 breakpoints, 4 watchpoints
Info : starting gdb server for STM32F103C8Tx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x20036410
Info : flash size = 64kbytes
undefined debug reason 8 - target needs reset
O.K.
O.K.:0xE00FFFD0
undefined debug reason 8 - target needs reset
shutdown command invoked
Info : dropped 'gdb' connectionДальше я уже не знаю что делать. Прошу посоветовать что где еще надо докрутить, чтобы помигать светодиодом.
* * *
UPD: Иногда запуск почему-то происходит по-другому, хотя ничего ни в коде ни в конфигурации не меняю. Запуск сопровождается появлением окна с ошибкой:
Код: Выделить всё
Could not verify STM device!Выхлоп запуска при этом немного другой, строки с Info те же самые, но в конце такие ошибки:
Код: Выделить всё
undefined debug reason 8 - target needs reset
O.K.
O.K.:0xE00FFFD0
Error: Failed to read memory at 0xfffffffe
Error: Failed to read memory at 0xfffffffe
undefined debug reason 8 - target needs reset
shutdown command invoked
Info : dropped 'gdb' connection