Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afSven Dahl Redigeret for ca. et år siden
1
Port access I det efterfølgende vil vi anvende databladsoplysninger frem for anvende de færdige metoder.
2
Find port i diagram LED 1 er forbundet til pin 8 på Port E
3
Find adresse på Port E Port E starter på adresse 0x40011800
4
Find pin 8 configurations register Pin 8 ligger på bit 0-3 i CRH registeret, vi vil skrive 0x3 for at få General purpose output push-pull, 50MHz
5
Find offset adresse på BSRR og CRH BSRR offset er 0x10, CRH på 0x04
6
Koden /* myBlinky: Very Simple LED Flasher */ /* Dr. Mark Fisher, CMP, UEA, Norwich, UK. */ /* Last updated 29.06.10 */ /**************************************************************/ #include #define GPIOE_CRH *((int *)0x40011804) //GPIOE address + CRH offset #define GPIOE_BSRR *((int *)0x40011810) //GPIOE address + BSRR offset #define GPIOE_BRR *((int *)0x40011814) //GPIOE address + BSRR offset #define RCC_APB2ENR *((int *)0x40021018) //Reset register til af GPIO int main (void) { int i; RCC_APB2ENR |= 1 << 6; //Enable IO Port E GPIOE_CRH = 0x00000003; //General purpose output push-pull, 50MHz for (;;) { /* Loop forever */ for (i = 0; i < 1000000; i++) GPIOE_BSRR = 1 <<8; //Skriv til set register pin 8 for (i = 0; i < 1000000; i++) GPIOE_BRR = 1 <<8; //Skriv til reset register pin 8 }
7
Opgave Afprøv foregående kode Prøv derefter at ændre koden så de andre LEDs slukkes Prøv at lave kode som kan aflæse keyboard på boardet – Find keys i diagrammet og deraf port og pin – Find adresse på porten – Opsæt porten til input – Enable porten i RCC_APB2ENR – Lav kode som aflæser porten
8
Alternativ port access /* myBlinky: Very Simple LED Flasher */ /* Dr. Mark Fisher, CMP, UEA, Norwich, UK. */ /* Last updated 29.06.10 */ /**************************************************************/ #include int main (void) { const unsigned long led_mask = 1<<15; int i; int a; SystemInit(); /* Setup GPIO for LEDs */ RCC->APB2ENR |= 1 << 6; /* Enable GPIOE clock */ GPIOE->CRH = 0x33333333; /* Configure the GPIO for LEDs */ for (;;) { /* Loop forever */ for (i = 0; i < 1000000; i++) GPIOE->BSRR = led_mask; /* Turn LED on */ for (i = 0; i < 1000000; i++) GPIOE->BSRR = led_mask << 16; /* Turn LED off */ a = GPIOE->BRR; } Koden her anvender de registre som i forvejen er defineret. Afprøv koden, og prøv på samme måde igen at lave kode som aflæser input keys
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.