Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32f103 remapping GPIOD.0 GPIOD.1
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
andrey74
Добрый день! Чтобы использовать 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
Проблема решена. PD0 работает только как Input, PD1 - output.
Ya. Kolmakov
Добрый день,
Может есть все-таки какой то способ запустить D0 и D1 на выход?
У меня пока ничего не выходит, хотя и опыта особо нет.
Может кто-то дать пример кода?

И еще вопрос - зачем в коде в первом посте два раза повторяется
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);
Ruslan1
Цитата(Ya. Kolmakov @ Dec 15 2015, 21:41) *
Добрый день,
Может есть все-таки какой то способ запустить D0 и D1 на выход?

В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов.
Ya. Kolmakov
Цитата(Ruslan1 @ Dec 16 2015, 02:13) *
В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов.


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



В качестве добавления - вот рабочий код для 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);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.