#include "stm32f4xx.h" /* GPIOx->MODER = 0x00000000; // MODE Register: 00-in, 01-out, 10-AF, 11-analog GPIOx->OTYPER = 0x0000; // Output TYPE Register: 0-PushPull, 1-OpenDrain GPIOx->OSPEEDR = 0x00000000; // Output SPEED Register: 00-2, 01-25, 10-50, 11-100 [MHz] GPIOx->PUPDR = 0x00000000; // PullUp PullDown Register: 00-none, 01-Pup, 10-Pdn, 11-reserved GPIOx->IDR = 0x0000; // Input Data Register GPIOx->ODR = 0x0000; // Output Data Register GPIOx->BSRRL = 0x0000; // Bit Set Reset Register Hi: bit sets PortPin GPIOx->BSRRH = 0x0000; // Bit Set Reset Register Lo: bit resets PortPin GPIOx->LCKR = 0x00000000; // LoCK Register GPIOx->AFR[0] = 0x00000000; // Alternative Function Register Lo - select 1of16 GPIOx->AFR[1] = 0x00000000; // Alternative Function Register Hi - select 1of16 */ void main (void) { // This set for LED only char in; RCC->AHB1ENR |= 16 + 8 + 4 + 1; // Enable clock for GPIOA, C, D, E GPIOA->MODER |= 0x00005000; // MODE Register - LED PA06, PA07 GPIOC->MODER |= 0x04000000; // MODE Register - LED PC13 GPIOD->MODER |= 0x00100000; // MODE Register - LED PD10 while (1) { in = GPIOE->IDR & 0x3f; // use lower six bits from port E if (in & 0x01) GPIOA->ODR |= 0x0040; else GPIOA->ODR &= ~0x0040; if (in & 0x02) GPIOA->ODR |= 0x0080; else GPIOA->ODR &= ~0x0080; if (in & 0x04) GPIOC->ODR |= 0x2000; else GPIOC->ODR &= ~0x2000; if (in & 0x08) GPIOD->ODR |= 0x0400; else GPIOD->ODR &= ~0x0400; //if (in & 0x10) GPIOA->ODR |= 0x00c0; else GPIOA->ODR &= ~0x00c0; //if (in & 0x20) GPIOD->ODR |= 0x0400; else GPIOD->ODR &= ~0x0400; }; }