#include "stm32l0xx.h"
void a (uint8_t pinToOn)
{
GPIOA -> MODER &= ~(3UL << (pinToOn * 2));
GPIOA -> MODER |= (1UL << (pinToOn * 2));
GPIOA -> ODR |= (1UL << pinToOn);
}
void b (uint8_t pinToOn)
{
GPIOB -> MODER &= ~(3UL << (pinToOn * 2));
GPIOB -> MODER |= (1UL << (pinToOn * 2));
GPIOB -> ODR |= (1UL << pinToOn);
}
void c (uint8_t pinToOn)
{
GPIOC -> MODER &= ~(3UL << (pinToOn * 2));
GPIOC -> MODER |= (1UL << (pinToOn * 2));
GPIOC -> ODR |= (1UL << pinToOn);
}
void h (uint8_t pinToOn)
{
GPIOH -> MODER &= ~(3UL << (pinToOn * 2));
GPIOH -> MODER |= (1UL << (pinToOn * 2));
GPIOH -> ODR |= (1UL << pinToOn);
}
int main(void)
{
RCC -> IOPENR |= RCC_IOPENR_GPIOAEN;
RCC -> IOPENR |= RCC_IOPENR_GPIOBEN;
RCC -> IOPENR |= RCC_IOPENR_GPIOCEN;
RCC -> IOPENR |= RCC_IOPENR_GPIOHEN;
while(1)
{
//Красные - от пинов, к которым нету взаимодействия через MODER, ODR
//Жёлтые - от пинов, к которым есть взаимодействие через MODER, ODR
//Зелёные - от пинов, которые сами подают ток
//Порт А
//a(0); //PA0 - A0
//a(1); //PA1 - A1
//a(2); //PA2 - A7
//a(3); //PA3 - A2
//a(4); //PA4 - A3
//a(5); //PA5 - A4
//a(6); //PA6 - A5
//a(7); //PA7 - A6
//a(8); //PA8 - D9
//a(9); //PA9 - D1/TX
//a(10); //PA10 - D0/RX
//a(11); //PA11 - D10
//a(12); //PA12 - D2
//Порт В
//b(0); //PB0 - D3
//b(1); //PB1 - D6
//b(2); //!!!PB2 - Без возможности взаимодействовать, он внутренний
//b(3); //PB3 - D13 + LD3
//b(4); //PB4 - D12
//b(5); //PB5 - D11
//b(6); //PB6 - D5
//b(7); //PB7 - D4
//Порт С
//c(0); //PC0 - не дает ток
//c(1); //PC1 - не дает ток
//c(2); //PC2 - не дает ток, как и весь порт С
//Порт Н
//h(0); //PH0 - не дает ток
//h(1); //PH1 - не дает ток
//h(2); //PH2 - не дает ток, как и весь порт H
//Пины VIN, 5V, 3V3 - Дают ток всегда
//Пины GND - Это "бездна", куда уходит протекающий ток
//LD3 - Встроенный светодиод
//LD2 - "Фидбэк" чипа. Если не горит при работе - плохой знак, вполне вероятно это короткое замыкание
//RST, D8, D7, REF, RST - имеют свои функционалы/не взаимодействуются таким способом
}
}