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

stm32f103 remapping GPIOD.0 GPIOD.1

Добрый день! Чтобы использовать GPIOD.0 и GPIOD.1 (вместо внешнего кварца OSCIN и OSCOUT), я соответственно, их "ремапнул". Но на ноге GPIOD.1, почему-то, всегда 1,1 В. Хотя использую поддтяжку внешнюю и внутреннюю к питанию (3.3 Вольт).

Но! Когда нажимаю кнопку (притягиваю GPIOD.0 к "земле"), то на порту GPIOD.1 появляются заветные 3,3 В и работает как надо в режиме "входа".

Когда GPIOD.1 "висит в воздухе" (отключаю от платы этот порт), то на ноге все-равно 1,12 Вольт. Что может быть?

Вот код инициализации.

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);     // подключаем альтернативные функции
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); //включаем тактирование порта D на вход для опроса адреса платы:
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);// разрешаем ремап
/* Configure PD0 PD1 (oscillator) as input pull-up */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // на вход, поддяжка к питанию
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;// тактирование 50 МГц
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);

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

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


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

Добрый день,

Может есть все-таки какой то способ запустить D0 и D1 на выход?

У меня пока ничего не выходит, хотя и опыта особо нет.

Может кто-то дать пример кода?

 

И еще вопрос - зачем в коде в первом посте два раза повторяется

GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);

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


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

Добрый день,

Может есть все-таки какой то способ запустить D0 и D1 на выход?

В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов.

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


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

В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов.

 

Жаль что так. Тогда получается что STM32Cube не отслеживает эту ситуацию и генерит вот такие картинки

 

STM32_F103_CBT6.jpg

 

В качестве добавления - вот рабочий код для PD01 как выход

 GPIO_InitTypeDef      GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;//GPIO_Mode_AF_PP; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);

// проверка работы   
GPIO_ResetBits(GPIOD,GPIO_Pin_1);
GPIO_SetBits(GPIOD,GPIO_Pin_1);
GPIO_ResetBits(GPIOD,GPIO_Pin_1);

Изменено пользователем Ya. Kolmakov

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


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

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

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

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

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

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

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

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

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

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