Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Port access I det efterfølgende vil vi anvende databladsoplysninger frem for anvende de færdige metoder.

Lignende præsentationer


Præsentationer af emnet: "Port access I det efterfølgende vil vi anvende databladsoplysninger frem for anvende de færdige metoder."— Præsentationens transcript:

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


Download ppt "Port access I det efterfølgende vil vi anvende databladsoplysninger frem for anvende de færdige metoder."

Lignende præsentationer


Annoncer fra Google