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

 
 
 
Reply to this topicStart new topic
> stm32f103 remapping GPIOD.0 GPIOD.1, на GPIOD.1 1,12 вольт :(
andrey74
сообщение Jul 10 2014, 02:02
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 184
Регистрация: 14-02-11
Пользователь №: 62 953



Добрый день! Чтобы использовать 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 - Jul 10 2014, 02:05
Go to the top of the page
 
+Quote Post
andrey74
сообщение Jul 11 2014, 04:13
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 184
Регистрация: 14-02-11
Пользователь №: 62 953



Проблема решена. PD0 работает только как Input, PD1 - output.
Go to the top of the page
 
+Quote Post
Ya. Kolmakov
сообщение Dec 15 2015, 19:41
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 224
Регистрация: 1-05-06
Из: С-Петербург
Пользователь №: 16 657



Добрый день,
Может есть все-таки какой то способ запустить D0 и D1 на выход?
У меня пока ничего не выходит, хотя и опыта особо нет.
Может кто-то дать пример кода?

И еще вопрос - зачем в коде в первом посте два раза повторяется
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 15 2015, 23:13
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



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

В документации четко написано, что PD0- только Input, PD1- только Output. Тут нет никакой свободы для экспериментов.
Go to the top of the page
 
+Quote Post
Ya. Kolmakov
сообщение Dec 16 2015, 07:21
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 224
Регистрация: 1-05-06
Из: С-Петербург
Пользователь №: 16 657



Цитата(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);


Сообщение отредактировал Ya. Kolmakov - Dec 16 2015, 08:00
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:53
Рейтинг@Mail.ru


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