====== 2. Blikání s LED pomocí assembleru ====== ===== Cíle cvičení ===== - Instrukční sada, assembler - Vytvořit program v assembleru, který bude blikat s LED2 na nucleu nebo s jinou LED ===== Co je třeba si připravit ===== - Prostudovat {{ :courses:b2m37mam:stm32f4_instruction_set.pdf#page=50 |instrukční sadu}} od strany 50 nebo alespoň vybrané instrukce [[courses:b2m37mam:dokumentace|zde]] - Seznámit se s registry RCC, GPIO(C) mikrokontroléru STM32F401 v {{ :courses:b2m37mam:stm32f401_refmanual.pdf |referenčním manuálu}} ===== RCC (Reset and clock control) ===== ** Bázová adresa je:** ''0x40023800'' Skupina registrů RCC povoluje hodinové signály do jednotlivých periferií (GPIO, TIMER, ADC, ...) a tím pádem je třeba pro danou periferii, kterou chceme používat nejprve zavést hodinový signál do příslušného bloku (RCC->AHBxENR, RCC->APBxENR, ...). Taktéž zajišťuje nastavení hodinových kmitočtů pro jednotlivé periferie i jádro procesoru. ==== AHB1ENR ==== ** Offset registru je:** ''0x30'' Registr AHB1ENR zajišťuje povolení hodin pro GPIO brány a DMA signály. Podle následujícího obrázku např. nastavením nultého bitu do logické 1 povolíme hodinový signál do brány GPIOA, nastavením do 0 naopak hodinový signál z brány GPIOA odebereme. {{ :courses:b2m37mam:tutorials:rcc_ahb1enr.jpg |}} ===== GPIOx ===== Obecná GPIO brána je 16-ti bitová brána, která může být použita jak vstupně-výstupní port pro digitální periferie, tak i analogová brána, pokud se na dané bráně nachází analogové vstupy nebo výstupy. V případě digitální periferie se může jednat jak o softwarově řízené piny, tak je možné využít i předem definované bloky, které jsou harwarově namapované na konkrétní piny procesoru. Toto namapování je poté možné nalézt v {{ :courses:b2m37mam:stm32f401.pdf#page=45 |datahsheetu}} na straně 45 v tabulce alternativních funkcí.