Некоторые булавки не используются при использовании ST-Link ?

ROLO644U
Чт 26 мая 2016 г. 16:59
Я испытываю странный эффект при использовании ST-Link в качестве инструмента загрузки. Некоторые выводы ввода/вывода не используются (PB3, PB4, PA15, PA12, PA11). Я проверяю это с помощью простого наброска миганий, используя стандартную команду DigitalWrite. Все остальные булавки работают нормально. То же самое на всех моих платах STM (2x Maple Mini и 2x Blue Pill).
Использование загрузчика в качестве инструмента загрузки работает пропущенные булавки, кроме PA12 и PA11, они теперь используются для USB, так что оставленные в одиночку.
Я не могу привлечь голову, почему это ? Я думал, что один и тот же код мигается обоим методами, только используя другой транспортный метод.
Эти булавки зарезервированы для чего -то другого или я упускаю что -то основную информацию здесь ?

Martinayotte
Чт 26 мая 2016 г. 18:12
Это потому, что эти булавки - штифты JTAG.
При использовании ST-Link он не выполняет никакого вызова, чтобы отключить SWD и JTAG.
Соответствующий код расположен в STM32F1/SYSTER/LIBMAPLE/STM32F1/include/series/gpio.H, вызванное определением в плате.CPP варианта.
/** * @brief Debug port configuration * * Used to configure the behavior of JTAG and Serial Wire (SW) debug * ports and their associated GPIO pins. * * @see afio_cfg_debug_ports() */ typedef enum afio_debug_cfg { /** Full Serial Wire and JTAG debug */ AFIO_DEBUG_FULL_SWJ = AFIO_MAPR_SWJ_CFG_FULL_SWJ, /** Full Serial Wire and JTAG, but no NJTRST. */ AFIO_DEBUG_FULL_SWJ_NO_NJRST = AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_NJRST, /** Serial Wire debug only (JTAG-DP disabled, SW-DP enabled) */ AFIO_DEBUG_SW_ONLY = AFIO_MAPR_SWJ_CFG_NO_JTAG_SW, /** No debug; all JTAG and SW pins are free for use as GPIOs. */ AFIO_DEBUG_NONE = AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW, } afio_debug_cfg; /** * @brief Enable or disable the JTAG and SW debug ports. * @param config Desired debug port configuration * @see afio_debug_cfg */ static inline void afio_cfg_debug_ports(afio_debug_cfg config) { __io uint32 *mapr = &AFIO_BASE->MAPR; *mapr = (*mapr & ~AFIO_MAPR_SWJ_CFG) | config; }

ROLO644U
Чт 26 мая 2016 г., 18:30
Спасибо ! Это много объясняет. Теперь я использовал этот кусок кода в разделе «Настройка» и светодиод на PA15 мигает : D
void setup() { afio_cfg_debug_ports(AFIO_DEBUG_NONE);

Martinayotte
Чт 26 мая 2016 г., 19:27
Остерегайтесь, что с помощью AFIO_DEBUG_NONE вы не сможете отладить с помощью ST-LINK, но с AFIO_DEBUG_SW_ONLY это разрешено.

ROLO644U
Чт 26 мая 2016 г., 19:47
Да, спасибо, нужно погрузиться в эти функции отладки позже, в моем списке "to tearn" !

Стивестронг
Солнце 15 января 2017 г. 14:22
Ну, я также заразился этим вирусом "PB4, не переключал"...

Я не могу найти место в репо, где AFIO настраивает порты для отладки/не-дебуг.

Я использую синюю таблетку с методом загрузки STM32DUIN afio_cfg_debug_ports(AFIO_DEBUG_NONE);

Стивестронг
Солнце 15 января 2017 г. 14:45
HM, странно, я нашел в Строка 48 Правления.CPP Если порт отладки должен быть отключен, но он не будет отключен, хотя компилятор будет вызван с соответствующей директивой: Compiling sketch... "C:\Users\me\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1/bin/arm-none-eabi-g++" -c -g -Os -DDEBUG_LEVEL=DEBUG_NONE -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_generic_stm32f103c -DVECT_TAB_ADDR=0x8002000 -DERROR_LED_PORT=GPIOB -DERROR_LED_PIN=1 -mcpu=cortex-m3 -DF_CPU=72000000L -DARDUINO=10612 -DARDUINO_GENERIC_STM32F103C -DARDUINO_ARCH_STM32F1 -DSERIAL_USB -DGENERIC_BOOTLOADER -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DMCU_STM32F103CB -mthumb -march=armv7-m -D__STM32F1__ -DMCU_STM32F103CB -mthumb -march=armv7-m -D__STM32F1__ "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/include" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/stm32f1/include" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/stm32f1" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/usb/usb_lib" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\cores\maple" "-IC:\Users\me\Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c" "C:\Users\me\AppData\Local\Temp\arduino_build_226650\sketch\Blink.ino.cpp" -o "C:\Users\me\AppData\Local\Temp\arduino_build_226650\sketch\Blink.ino.cpp.o"

Стивестронг
Солнце 15 января 2017 г. 15:04
Странно...

Скомпилирование этого кода является частью платы.CPP:
void boardInit(void) { #warning "Initializing board..." #ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG #warning "Disabling debug port..." disableDebugPorts(); #endif }

Martinayotte
Солнце 15 января 2017 г. 17:00
Это "#ifndef", а не "#ifdef".

Стивестронг
Солнце 15 января 2017 г., 17:13
Да, вот и все.
А также в досках.txt, я не должен был иметь это определение (не знаю, откуда это).
Я удалил это определить, и сейчас все в порядке.

Martinayotte
Солнце 15 января 2017 г. 18:38
Это довольно нормально иметь этот флаг в методе загрузки Stlink, поскольку в противном случае вы можете загрузить только один раз, а затем SWD становится отключенным.

Стивестронг
Солнце 15 января 2017 г., 19:50
Да для Stlink, но у меня было это для метода загрузки STM32Duino загрузчик, который, я думаю, не нужна.

Martinayotte
Солнце 15 января 2017 г. 8:44 вечера
Ты прав ! Роджер сделал это изменение 26 декабря, я не знаю, почему, кроме как разрешить отладению отладки SWD, используется любой метод загрузки.

https: // github.com/rogerclarkmelbourne/ ... A4B3925FFB

Стивестронг
Солнце 15 января 2017 г. 9:56 вечера
Ну, я думаю, что нам нужно найти другое решение для оригинальной идеи, чтобы включить отладку, потому что я потерял 2 дня, чтобы найти эту проблему, и, возможно, будет больше пользователей, которые будут жаловаться на это.

Rogerclark
Солнце 15 января 2017 г. 22:52
Я сейчас в замешательстве

Люди хотели, чтобы булавки SWD были включены все время, поэтому я изменил их.

Разве это не то, что было рождено большинством пользователей?

Даниэфф
Пн 16 января 2017 г. 5:26 утра
Идея: Включить SWD всегда и отключить его от Pinmode, если кто -то хочет один из его булавок.

Стивестронг
Пн 16 января 2017 г. 5:57 утра
Мне просто интересно, сколько из нас отлаживает при загрузке с DFU, не имея отладчика.
Я признаю, что это может быть не подходящее место, чтобы опубликовать мою проблему, потому что это происходит без использования Stlink. И, очевидно, я пропустил это большинство голосов.
Эта проблема, которую я вижу, так как затронутый штифт не может быть исправлен только с помощью только PinMode, действительно нужно использовать функцию AFIO CFG.
Но я не хочу выдвигать свое мнение, я подчиняюсь большинству, я просто надеюсь, что другие найдут этот пост и узнают, что они должны использовать не совместимую функцию Arduino «afio_cfg_debug_ports (afio_debug_none);»; Чтобы получить их булавку в любом простом наброске.
Я, я просто удалю соответствующий определение с «досок.txt "для моей локальной версии и GitHub.

Martinayotte
Пн 16 января 2017 г. 14:52
Я думаю, что идея Даниэля хорошая:
Может быть.

Стивестронг
Пн 16 января 2017 г. 15:29
Я не знаю, имеет ли это мое мнение, но я бы предложил запись в меню IDE, таким образом остается пользователю, чтобы включить/отключить отладку в соответствии с его потребностями. Да, вы могли бы сказать, что у нас уже есть много записей меню. Действительно. Но все же, это было бы важно, на мой взгляд,. И это можно сделать на нескольких платформах/досках.
Более того, что параллельные библиотеки TFT делают режимы вывода без вызова pinmode () для каждого вывода, а скорее используйте прямые записи для настройки нескольких выводов в одном выстреле (кстати, это был способ, которым я решаю эту проблему).

Это должно быть связано (но может быть сделано также независимо) с информацией (на вики?) указывает на вовлеченные булавки GPIO.

Нам в любом случае нужны хорошие вики -страницы, касающиеся отладки.

Рик Кимбалл
Пн 16 января 2017 г. 16:08
Стивестронг написал:...Но я не хочу выдвигать свое мнение, я подчиняюсь большинству, я просто надеюсь, что другие найдут этот пост и узнают, что они должны использовать не совместимую функцию Arduino «afio_cfg_debug_ports (afio_debug_none);»; Чтобы получить их булавку в любом простом наброске.

Стивестронг
Пн 16 января 2017 г., 17:42
Рик, я не упустил из виду этот пост, я просто хотел повторить решение для людей, которые просматривают эту ветку, в поисках решения. ;)
Рик Кимбалл написал:Нет никакого большинства, чтобы использовать эти доски. Есть много разных людей, использующих много разных досок по -разному.

Рик Кимбалл
Пн 16 января 2017 г., 17:54
Какую доску вы используете?

Стивестронг
Пн, 16 января 2017 г. 18:43
Я действительно не понимаю, почему подержанная доска будет здесь актуальной.
Но в любом случае, я использую альтернативно -клоп -мини -клон или синюю таблетку. Я использую таблетку альтернативно с DFU (если мне нужен 5 В и USB -сериал) или Stlink, если я хочу отладить, очень редко.

Рик Кимбалл
Пн 16 января 2017 г., 18:48
Стивестронг написал:Я не понимаю, почему подержанная доска будет здесь.
Но в любом случае, я использую альтернативно -клоп -мини -клон или синюю таблетку. Я использую таблетку альтернативно с DFU (если мне нужен 5 В и USB -сериал) или Stlink, если я хочу отладить, очень редко.

Стивестронг
Пн 16 января 2017 г., 19:02
Да, я использую PB2 (Boot1) вместе с PB0..7 В качестве контактов данных для 8 -битного параллельного интерфейса отображения, проблемным случаем был PB4, который не переключался из -за включенного интерфейса отладки.
И я бы не задался вопросом, будет ли кто -нибудь использовать PA0/PA8..15 Вместо этого в качестве булавок. Я имею в виду, почему бы и нет, если он доступен на доске? Даже если он отменит сериал 1 и серийные функциональность USB, на которых можно снова обсудить бесконечно...
Извините, Рик, но я до сих пор не понимаю, что вы хотите сказать, почему подержанная доска была бы здесь актуальна.

Рик Кимбалл
Пн 16 января 2017 г., 19:06
Стивестронг написал:Извините, Рик, но я до сих пор не понимаю, что вы хотите сказать, почему подержанная доска была бы здесь актуальна.

Стивестронг
Пн 16 января 2017 г., 19:07
Итак, пожалуйста, сообщите, что такое «большинство», чтобы использовать доску, где указано.
Особенно, где пользователь предупреждал, что он не может использовать PB4 из -за включенного интерфейса JTAG (отладка), который, по -видимому, имеет приоритет над DFU/Serial USB. :?
И я не против (возможно) включить контакты JTAG (где участвует PB4), если таблетки будут иметь разъем интерфейса JTAG...
Но таблетки только установили разъем интерфейса SWD, который будет включать только PA13/14, но не PB3/PB4 вообще.

Рик Кимбалл
Пн 16 января 2017 г., 19:23
Стивестронг написал:Итак, пожалуйста, сообщите, что такое «Путь большинства», где указано.

Martinayotte
Пн 16 января 2017 г., 21:12
Стивестронг написал:Но таблетки только установили разъем интерфейса SWD, который будет включать только PA13/14, но не PB3/PB4 вообще.

Стивестронг
Вт 17 января 2017 г. 7:58 утра
Да, я знаю об этом.
Тем не менее, при использовании метода загрузки DFU полные выводы отладки JTAG назначаются для отладки, даже если на борту находится только разъем SWD, и я не понимаю, почему это будет полезно для «пользователей большинства», кто -то может объяснить.

Rogerclark
Вт 17 января 2017 г. 10:01
Стивестронг написал:Да, я знаю об этом.
Тем не менее, при использовании метода загрузки DFU полные выводы отладки JTAG назначаются для отладки, даже если на борту находится только разъем SWD, и я не понимаю, почему это будет полезно для «пользователей большинства», кто -то может объяснить.

Стивестронг
Вт 17 января 2017 г. 16:42
Rogerclark написал:Возможно, я должен изменить это на то, как это было.

victor_pv
Вторник 17 января 2017 г., 17:32
Стивестронг написал:Rogerclark написал:Возможно, я должен изменить это на то, как это было.

Rogerclark
Вторник 17 января 2017 г. 20:33
@stevstrong

Хорошо. Я посмотрю на код.

Я никогда не менял код C, который предоставляет контакты SWD доступными в качестве GPIO. Я только изменил доски.настройки TXT.

Я предполагаю, что код C был написан либо Leaflabs, когда они первоначально написали ядро.

Стивестронг
Сб 25 февраля 2017 г., 17:45
Роджер, просто слегка, чтобы что -то сделать в этом направлении, если вы все еще считаете, что это имеет смысл:
Rogerclark написал:Стивестронг написал:Да, я знаю об этом.
Тем не менее, при использовании метода загрузки DFU полные выводы отладки JTAG назначаются для отладки, даже если на борту находится только разъем SWD, и я не понимаю, почему это будет полезно для «пользователей большинства», кто -то может объяснить.

Rogerclark
Сб 25 февраля 2017 г., 19:59
Спасибо за напоминание. Возможно, я смогу просто вернуть коммит, который изменил его, или просто вытащить предыдущий коммит и скопировать доски.TXT в мастер / голову, так как я не думаю, что что -то еще изменилось в этом файле.

Rogerclark
Солнце 26 февраля 2017 г. 2:30
Стивестронг написал:Роджер, просто слегка, чтобы что -то сделать в этом направлении, если вы все еще считаете, что это имеет смысл:
Rogerclark написал:Стивестронг написал:Да, я знаю об этом.
Тем не менее, при использовании метода загрузки DFU полные выводы отладки JTAG назначаются для отладки, даже если на борту находится только разъем SWD, и я не понимаю, почему это будет полезно для «пользователей большинства», кто -то может объяснить.

ун
Сб 6 мая 2017 г. 13:06
Привет, мои причины отмены DFU:
- В Windows 8.1 X64 DFU не очень хорошо работает, это боль;
- Я хочу припаять 7 сегментов ЖК -дисплей напрямую и уродливой для платы Bluepill, см. Хороший фото на моем столе, :);
Изображение
Русский сайт хостинга фото
- Запуск RTC с платы и ЖК -дисплеев, какая легкая платформа для многих приложений!...

Так что, пожалуйста, пожалуйста... Мне нужны PA11 и PA12 в режиме GPIO :( простым способом, таким как JTAG отключить... afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY);