Hallo,
ich würde gerne wissen was im Folgenden Beispiel die Bezeichnungen 1UL
und 3UL bewirken ? UL = unsigned Long??? Kann mir einer den Zusammenhang
erklären? Ich kenne es eigentlich bisher nur so, dass wenn man diese
Zeile als Beispiel verwendet
1 | LPC_SC->PCONP |= (1UL<<12);
|
, an die 12te Stelle eine 1 geschoben wird und dann mit dem bisherigen
Inhalt des Registers Oder-Verknüpft wird. Wie ist das jetzt
beispielsweise bei
1 | LPC_PINCON->PINSEL3 |= (3UL<<30);
|
???
Würden uns über Antworten freuen, fangen grad an in die Thematik
einzusteigen.
Besten dank im voraus,
Gruß Sven & Alex
1 | int main (void)
|
2 | {
|
3 | unsigned int val;
|
4 |
|
5 | SystemInit();
|
6 |
|
7 | //ET-NXP ARM KIT(LPC1768) Hardware
|
8 | //LED = P2[7..0]
|
9 | //ADC = P1.31(AD0.5)
|
10 | LPC_GPIO2->FIODIR =0xFF; // P2[0..7] defined as Outputs
|
11 | LPC_GPIO2->FIOPIN = 0x00; // OFF all LED
|
12 |
|
13 | LPC_PINCON->PINSEL3 &= ~(3UL<<30); // Reset P1.31 = GPIO
|
14 | LPC_PINCON->PINSEL3 |= (3UL<<30); // Config P1.31 is AD0.5
|
15 | LPC_SC->PCONP |= (1UL<<12); // Enable power to ADC block
|
16 | LPC_ADC->ADCR = (1UL<< 5) | // select AD0.5 pin
|
17 | (1UL<< 8) | // ADC clock is 18MHz/2
|
18 | (1UL<<21); // enable ADC
|
19 |
|
20 | while(1)
|
21 | {
|
22 | LPC_ADC->ADCR |= (1<<24); // start conversion
|
23 | while (!(LPC_ADC->ADGDR & (1UL<<31))); // Wait for Conversion end
|
24 | val = ((LPC_ADC->ADGDR >> 4) & 0xFFF); // read converted value
|
25 | LPC_ADC->ADCR &= ~(7<<24); // stop conversion
|
26 |
|
27 | LPC_GPIO2->FIOPIN = led_graph[val/512]; // result of A/D process
|
28 | }
|
29 | }
|