Перейти к содержанию
    

Как освободить PB3 и PB4 на STM32F4?

Собственно вопрос в теме.

 

При сбросе они примаплены к JTAG.

Пытался делать, как в ST-шном примере:

 

/* Configure PB.03 (JTDO) and PB.04 (JTRST) as output push-pull */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_Init(GPIOB, &GPIO_InitStructure);

 

ни фига не вышло.

Для F10x есть функция GPIO_PinRemapConfig, которая это делает. Для F4 такого не нашёл.

 

Мне надо дрыгать этими ногами. Ну PB3 на моей дискавери заведен на программатор, а как освободить PB4?

 

Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как на вашем птичьем а напрямую для PB.4 вроде так:

GPIOB->MODER   |= 0x100;
GPIOB->OTYPER  &= 0xFFEF;

Ну, там еще со скоростью (GPIOB_OSPEEDR) надо определиться, а то вы не указали как быстро ими махать надо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как на вашем птичьем а напрямую для PB.4 вроде так:

GPIOB->MODER   |= 0x100;
GPIOB->OTYPER  &= 0xFFEF;

Ну, там еще со скоростью (GPIOB_OSPEEDR) надо определиться, а то вы не указали как быстро ими махать надо

Старое содержимое регистров может помешать, как Вы думаете?

 

GPIOB->MODER = (GPIOB->MODER & ~ GPIO_MODER_MODER4) | (GPIO_MODER_MODER4_0 * 1);

 

 

hd44780, чего же в исходники моего проекта не заглядываете? Там уже и под STM32F4 есть поддержка.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите сюда (это, правда, от 103-го):

  AFIO->MAPR |= 0x02000000;    // JTAG-DP Disabled and SW-DP Enabled
  // AFIO->MAPR |= 0x01000000;    // Full SWJ (JTAG-DP + SW-DP) but without NJTRST

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите сюда (это, правда, от 103-го):

во-первых, на F4 не поможет, во-вторых, в коде ошибка. Биты регистра MAPR, отвечающие за режим JTAG/SWD, не читаются из этого регистра.

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

во-первых, на F4 не поможет, во-вторых, в коде ошибка. Биты регистра MAPR, отвечающие за режим JTAG/SWD, не читаются из этого регистра.

с первым - согласен

второе - биты пусть не читаются, главное, чтобы записывались! Остальные биты этого регистра читаются, и сохранятся при |=

Работало.

P.S. убедили... переделаю. Там состояние при чтении неопределенное, вдруг единицы выскочат? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

неопределенное, вдруг единицы выскочат

На F107-м они и выскочили...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...