реклама на сайте
подробности

 
 
> PB4 и JTAG в STM32F100RB, Похоже не могу отключить JTAG
greenhorn
сообщение Mar 4 2012, 14:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 18-01-12
Пользователь №: 69 728



Добрый день!

Хочу использовать GPIOB (в частности PB4) как push-pull out, но PB4 по умолчанию используется под NJRST.
У меня отладочная плата STM32 Value Line Discovery, встроенный отладчик использует только SWD, соответственно пытаюсь отключить JTAG, оставив только SWD и освободив тем самым PB4:
Код
void GPIOB_init (void)    {
    AFIO->MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE;    //отключаю JTAG, согласно таблице 29 из RM0041 PB3 и PB4 должны освободиться
    RCC->APB2ENR = RCC_APB2ENR_IOPBEN;            //включаю GPIOB
    GPIOB->CRL = 0x22222222;                    //настраиваю GPIOB0-7 на push-pull out
    GPIOB->CRH = 0x22222222;                    //настраиваю GPIOB8-15 на push-pull out
    GPIOB->LCKR = 0x0;                            //снимаю локи - знаю что после ресета итак 0, но чтоб наверняка
    return;
}

В результате на PB4 постоянно 3V и ни на что не реагирует, остальные линии (использую PB4-PB9) работают нормально. Как я понял JTAG по какой-то причине не отключается.
После взгляда на AFIO в Keil а режиме отладчика понимаю еще меньше:
Прикрепленное изображение

Как в SWJ_CFG может быть 0x78 если это всего 3 бита? Что значит это значение (по умолчанию должно бть 0 как я понимаю)? Почему не меняется (пробовал явно 0x02000000 вместо AFIO_MAPR_SWJ_CFG_JTAGDISABLE - безрезультатно)?

В RM0041 в пункте 25.4.4 стр 646 есть такя строка "To use the serial wire DP to release some GPIOs, the user software must set SWJ_CFG=010 just after reset. This releases PA15, PB3 and PB4 which now become available as GPIOs."
Это какраз то чего я и пытаюсь добиться, но не совсем понимаю что значит "сразу после ресета", есть жеж еще стандартный стартап код (startup_stm32f10x_md_vl.s и system_stm32f10x.c), разобраться в котором у меня пока не хватает знаний.

Подскажите пожалуйста как ПРАВИЛЬНО освободить PB4 для GPIO.
Уточню что моя задача больше разобраться и научиться программировать, иначе ногу можно было бы просто взять другую.

Спасибо.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 15:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016