Эх сурвалжийг харах

Добавил работа с GPIO в STM32F10x.

Vladimir N. Shilov 8 жил өмнө
parent
commit
7ad7fa3976
1 өөрчлөгдсөн 63 нэмэгдсэн , 0 устгасан
  1. 63 0
      stm32/pin.txt

+ 63 - 0
stm32/pin.txt

@@ -1,3 +1,66 @@
+https://hubstub.ru/stm32/65-stm32-gpio-ili-porty-vvoda-vyvoda.html
+stm32f1xx
+
+//Полагаем что выводы после сброса в режиме плавающего входа
+
+//разрешаем тактирование порта A
+RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
+	
+//вход с подтяжкой к +
+GPIOA->CRL &= ~GPIO_CRL_CNF0;
+GPIOA->CRL |= GPIO_CRL_CNF0_1;
+GPIOA->ODR |= GPIO_ODR_ODR0; 
+
+//вход с подтяжкой к -
+GPIOA->CRL &= ~GPIO_CRL_CNF1;
+GPIOA->CRL |= GPIO_CRL_CNF1_1;
+GPIOA->ODR &= ~GPIO_ODR_ODR1; 
+
+//аналоговый режим
+GPIOA->CRL &= ~GPIO_CRL_CNF2;
+
+//выход с открытым стоком 2MHz
+GPIOA->CRL &= ~GPIO_CRL_CNF3;
+GPIOA->CRL |= GPIO_CRL_CNF3_0;
+GPIOA->CRL |= GPIO_CRL_MODE3_1;
+
+//двухтактный выход 10MHz
+GPIOA->CRL &= ~GPIO_CRL_CNF4;
+GPIOA->CRL |= GPIO_CRL_MODE4_0;
+
+//альтернативная ф-ция, двухтактный выход, 50 MHz
+GPIOA->CRL &= ~GPIO_CRL_CNF5;
+GPIOA->CRL |= GPIO_CRL_CNF5_1;
+GPIOA->CRL |= GPIO_CRL_MODE5;
+
+//альтернативная ф-ция, выход с открытым стоком,  50 MHz
+GPIOA->CRL |= GPIO_CRL_CNF6;
+GPIOA->CRL |= GPIO_CRL_MODE6;
+
+
+//проверяем значение нулевого вывода порта А
+if (GPIOА->IDR & GPIO_IDR_IDR0)
+
+
+//если вывод в режиме входа то активируется подтяжка к питанию
+GPIOA->ODR |= GPIO_ODR_ODR0;
+//или к земле
+GPIOA->ODR &= ~GPIO_ODR_ODR0;
+//если в режиме выхода, то на нём установится соответствующий лог.уровень
+//например так можно установить все выходы порта в 1
+GPIOA->ODR = 0xFFFF;
+
+
+//сбросить нулевой бит порта А
+GPIOA->BRR = GPIO_BRR_BR0;
+
+
+//сбросить нулевой бит 
+GPIOA->BSRR = GPIO_BSRR_BR0;
+//установить нулевой бит
+GPIOA->BSRR = GPIO_BSRR_BS0;
+
+-=-=-
 Как проверить состояние пина порта?
 Скажем 4 пина порта С?