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

 
 
> STM32 вход с пулапом
Jenya7
сообщение Sep 9 2013, 06:05
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Хочу отконфигурировать пин как вход с пуллапом.
Камень STM32F103.
CODE
void GpioInit(void)
{
//PORTC Settings
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //GPIO portC clocking
GPIOC->CRL |= GPIO_CRL_CNF0_1; //PC0 input with pull-up/pull-down resistor
GPIOC->BSRR = GPIO_BSRR_BS0; //set pull-up on PC0
}


И потом проверяю.
CODE
int main(void)
{
GlobalInit();
UsartSendString("Start\r"); // to check we are still alive
while(1)
{

if(GPIOC->IDR & GPIO_IDR_IDR0==0)
{
delay_100us(); //debounce
if(GPIOC->IDR & GPIO_IDR_IDR0==0)
{
UsartSendString("Button 0\r");
}
}
}


Вроде все сделал правильно но не работает. На пине 0 вольт, хотя должно быть 3.3V.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение Sep 9 2013, 06:40
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
И потом проверяю.

1. только программой, не прибором?
2. и что пишет программа?

Цитата
GlobalInit();

а там вызывается GpioInit?


Цитата
GPIOC->IDR & GPIO_IDR_IDR0==0

а с учётом приоритета операций тут чушь написана.

зы. это и отвечает на вопрос про прибор.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 9 2013, 07:13
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(smalcom @ Sep 9 2013, 11:40) *
1. только программой, не прибором?
2. и что пишет программа?

а там вызывается GpioInit?

а с учётом приоритета операций тут чушь написана.

зы. это и отвечает на вопрос про прибор.


В GlobalInit() входит GpioInit().
GPIOC->IDR & GPIO_IDR_IDR0 обычная проверка с маской, в любом случае она не обнуляет пин,как я понимаю.

я убрал в мэйне код проверки пина, все равно не вижу пулапа на пине.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Sep 9 2013, 07:27
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Jenya7 @ Sep 9 2013, 08:13) *
В GlobalInit() входит GpioInit().
GPIOC->IDR & GPIO_IDR_IDR0 обычная проверка с маской, в любом случае она не обнуляет пин,как я понимаю.

я убрал в мэйне код проверки пина, все равно не вижу пулапа на пине.

Надо установить сам выход (ODR) в "1".
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 9 2013, 07:51
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(KnightIgor @ Sep 9 2013, 12:27) *
Надо установить сам выход (ODR) в "1".


установил GPIOC->ODR = GPIO_ODR_ODR0; все равно 0 вольт на пине.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Sep 9 2013, 08:18
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Jenya7 @ Sep 9 2013, 08:51) *
установил GPIOC->ODR = GPIO_ODR_ODR0; все равно 0 вольт на пине.

GPIOC->CRL |= GPIO_CRL_CNF1_1; //PC0 input with pull-up/pull-down resistor
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 9 2013, 08:27
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(KnightIgor @ Sep 9 2013, 13:18) *
GPIOC->CRL |= GPIO_CRL_CNF1_1; //PC0 input with pull-up/pull-down resistor

не помогло sad.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:56
Рейтинг@Mail.ru


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