andrey74 0 10 июля, 2014 Опубликовано 10 июля, 2014 (изменено) · Жалоба Добрый день! Чтобы использовать 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); Изменено 10 июля, 2014 пользователем andrey74 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrey74 0 11 июля, 2014 Опубликовано 11 июля, 2014 · Жалоба Проблема решена. PD0 работает только как Input, PD1 - output. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Y.Kolmakov 2 15 декабря, 2015 Опубликовано 15 декабря, 2015 · Жалоба Добрый день, Может есть все-таки какой то способ запустить D0 и D1 на выход? У меня пока ничего не выходит, хотя и опыта особо нет. Может кто-то дать пример кода? И еще вопрос - зачем в коде в первом посте два раза повторяется GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 14 15 декабря, 2015 Опубликовано 15 декабря, 2015 · Жалоба Добрый день, Может есть все-таки какой то способ запустить D0 и D1 на выход? В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Y.Kolmakov 2 16 декабря, 2015 Опубликовано 16 декабря, 2015 (изменено) · Жалоба В документации четко написано, что 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); Изменено 16 декабря, 2015 пользователем Ya. Kolmakov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться