#include "main.h" #define RCC_AHB4ENR ((volatile uint32_t*)0x580244E0) #define GPIOD_MODER ((volatile uint32_t*) 0x58020C00) #define GPIOD_IDR ((volatile uint32_t*) 0x58020C10) #define GPIOD_ODR ((volatile uint32_t*) 0x58020C14) #define GPIOJ_MODER ((volatile uint32_t*) 0x58022400) #define GPIOJ_IDR ((volatile uint32_t*) 0x58022410) #define GPIOJ_ODR ((volatile uint32_t*) 0x58022414) #define GPIOI_MODER ((volatile uint32_t*) 0x58022000) #define GPIOI_IDR ((volatile uint32_t*) 0x58022010) #define GPIOI_ODR ((volatile uint32_t*) 0x58022014) #define GPIOC_MODER ((volatile uint32_t*) 0x58020800) #define GPIOC_IDR ((volatile uint32_t*) 0x58020810) #define GPIOC_ODR ((volatile uint32_t*) 0x58020814) int main(void) { // 1. prizgi uro naprave // GPIOD: postavi bit 3 v RCC_AHB4ENR, GPIOJ: postavi bit 9, GPIOI: postavi bit 8 // GPIOC: postavi bit 2 *RCC_AHB4ENR = *RCC_AHB4ENR | (1 << 2) | (1 << 3) | (1 << 9) | (1 << 8); // 2. nastavi pin na izhod //PD3: brisi bit 7, postavi bit 6 *GPIOD_MODER = *GPIOD_MODER & ~(1 << 7); *GPIOD_MODER = *GPIOD_MODER | (1 << 6); //PJ2: brisi bit 5, postavi bit 4 *GPIOJ_MODER = *GPIOJ_MODER & ~(1 << 5); *GPIOJ_MODER = *GPIOJ_MODER | (1 << 4); //PI13: brisi bit 27, postavili bit 26 *GPIOI_MODER = *GPIOI_MODER & ~(1 << 27); *GPIOI_MODER = *GPIOI_MODER | (1 << 26); //PC13: brisi bita 26 in 27 *GPIOC_MODER = *GPIOC_MODER & ~(1 << 27); *GPIOC_MODER = *GPIOC_MODER & ~(1 << 26); // ugasnemo vse 3 LED *GPIOI_ODR = *GPIOI_ODR | (1 << 13); *GPIOJ_ODR = *GPIOJ_ODR | (1 << 2); *GPIOD_ODR = *GPIOD_ODR & ~(1 << 3); while (1) { // ali je gumb pritisnjen // 13-ti bit v IDR if (*GPIOC_IDR & (1 << 13)) { // prizgi LED *GPIOI_ODR = *GPIOI_ODR & ~(1 << 13); for (volatile int i = 0; i < 500000; i++); *GPIOJ_ODR = *GPIOJ_ODR & ~(1 << 2); for (volatile int i = 0; i < 500000; i++); *GPIOD_ODR = *GPIOD_ODR | (1 << 3); for (volatile int i = 0; i < 500000; i++); // ugasni LED *GPIOI_ODR = *GPIOI_ODR | (1 << 13); for (volatile int i = 0; i < 500000; i++); *GPIOJ_ODR = *GPIOJ_ODR | (1 << 2); for (volatile int i = 0; i < 500000; i++); *GPIOD_ODR = *GPIOD_ODR & ~(1 << 3); for (volatile int i = 0; i < 500000; i++); } } }