WGR-V
 
Lade ...
Suche ...
Keine Treffer
wgrhal.c
gehe zur Dokumentation dieser Datei
1
18#include "wgrhal.h"
19
20// ----------------------- WGR-V -----------------------
21//
22// Standard Speicher Funktionen
23//
24//------------------------------------------------------
25
26void *memcpy(void *dest, const void *src, uint32_t n)
27{
28 unsigned char *d = (unsigned char *)dest;
29 const unsigned char *s = (const unsigned char *)src;
30 while (n--)
31 {
32 *d++ = *s++;
33 }
34 return dest;
35}
36
37void *memset(void *dest, int32_t c, uint32_t n)
38{
39 unsigned char *d = (unsigned char *)dest;
40 while (n--)
41 {
42 *d++ = (unsigned char)c;
43 }
44 return dest;
45}
46
47void *memmove(void *dest, const void *src, uint32_t n)
48{
49 unsigned char *d = (unsigned char *)dest;
50 const unsigned char *s = (const unsigned char *)src;
51 if (d < s)
52 {
53 while (n--)
54 {
55 *d++ = *s++;
56 }
57 }
58 else if (d > s)
59 {
60 d += n;
61 s += n;
62 while (n--)
63 {
64 *(--d) = *(--s);
65 }
66 }
67 return dest;
68}
69
70// ----------------------- WGR-V -----------------------
71//
72// Standard String Funktionen
73//
74//------------------------------------------------------
75
76uint32_t strlen(const char *s)
77{
78 uint32_t len = 0;
79 while (*s++)
80 {
81 len++;
82 }
83 return len;
84}
85
86int32_t strcmp(const char *s1, const char *s2)
87{
88 while (*s1 && (*s1 == *s2))
89 {
90 s1++;
91 s2++;
92 }
93 return (int)((unsigned char)*s1 - (unsigned char)*s2);
94}
95
96int32_t strncmp(const char *s1, const char *s2, uint32_t n)
97{
98 while (n && *s1 && (*s1 == *s2))
99 {
100 s1++;
101 s2++;
102 n--;
103 }
104 if (n == 0)
105 {
106 return 0;
107 }
108 else
109 {
110 return (int)((unsigned char)*s1 - (unsigned char)*s2);
111 }
112}
113
114char *strcpy(char *dest, const char *src)
115{
116 char *d = dest;
117 while ((*d++ = *src++))
118 ;
119 return dest;
120}
121
122void int_to_str(int32_t num, int base, char *str)
123{
124 char temp[35];
125 int i = 0, j = 0;
126 int is_negative = 0;
127
128 if (base < 2 || base > 16)
129 {
130 str[0] = '\0';
131 return;
132 }
133
134 if (num == 0)
135 {
136 str[j++] = '0';
137 str[j] = '\0';
138 return;
139 }
140
141 if (num < 0 && base == 10)
142 {
143 num = -num;
144 }
145
146 while (num != 0)
147 {
148 int rem = num % base;
149 temp[i++] = (rem > 9) ? (rem - 10) + 'A' : rem + '0';
150 num /= base;
151 }
152
153 if (is_negative)
154 {
155 temp[i++] = '-';
156 }
157
158 while (i > 0)
159 {
160 str[j++] = temp[--i];
161 }
162 str[j] = '\0';
163}
164
165int32_t parse_integer(const char *str)
166{
167 int result = 0;
168 int sign = 1;
169
170 while (*str == ' ')
171 {
172 str++;
173 }
174
175 if (*str == '-')
176 {
177 sign = -1;
178 str++;
179 }
180
181 if (*str < '0' || *str > '9')
182 {
183 return -1;
184 }
185
186 while (*str >= '0' && *str <= '9')
187 {
188 result = result * 10 + (*str - '0');
189 str++;
190 }
191
192 while (*str == ' ' || *str == '\n')
193 {
194 str++;
195 }
196
197 if (*str != '\0')
198 {
199 return -1;
200 }
201
202 return result * sign;
203}
204
205int32_t parse_int_multi(const char *str, const char **next)
206{
207 int result = 0;
208 int sign = 1;
209
210 while (*str == ' ')
211 {
212 str++;
213 }
214
215 if (*str == '-')
216 {
217 sign = -1;
218 str++;
219 }
220
221 if (*str < '0' || *str > '9')
222 {
223 return -1;
224 }
225
226 while (*str >= '0' && *str <= '9')
227 {
228 result = result * 10 + (*str - '0');
229 str++;
230 }
231
232 if (next)
233 {
234 *next = str;
235 }
236
237 return result * sign;
238}
239
240// ----------------------- WGR-V -----------------------
241//
242// In das Debug Register schreiben
243//
244//------------------------------------------------------
245
246void debug_write(uint32_t value)
247{
248 HWREG32(DEBUG_ADDR) = value;
249}
250
251// ----------------------- WGR-V -----------------------
252//
253// UART Funktionen
254//
255//------------------------------------------------------
256
257void uart_enable(void)
258{
259
260 HWREG32(UART_BASE_ADDR + UART_CTRL_OFFSET) |= (uint32_t)1;
261}
262
263void uart_disable(void)
264{
265
266 HWREG32(UART_BASE_ADDR + UART_CTRL_OFFSET) &= ~(uint32_t)1;
267}
268
269void uart_set_baud(baud_sel_t baud)
270{
271 if (baud > 11)
272 {
273 baud = BAUD_9600;
274 }
276}
277
278uint32_t uart_get_status(void)
279{
281}
282
283uint32_t uart_is_ready(void)
284{
285 return ((uart_get_status() >> 5) & (uint32_t)1);
286}
287
288uint32_t uart_is_busy(void)
289{
290 return ((uart_get_status() >> 4) & (uint32_t)1);
291}
292
293uint32_t uart_rx_full(void)
294{
295 return ((uart_get_status() >> 3) & (uint32_t)1);
296}
297
298uint32_t uart_rx_empty(void)
299{
300 return ((uart_get_status() >> 2) & (uint32_t)1);
301}
302
303uint32_t uart_tx_full(void)
304{
305 return ((uart_get_status() >> 1) & (uint32_t)1);
306}
307
308uint32_t uart_tx_empty(void)
309{
310 return ((uart_get_status() >> 0) & (uint32_t)1);
311}
312
313int32_t uart_wait_tx_full(uint32_t timeout_ms)
314{
315 uint32_t start_time = millis();
316
317 while (uart_tx_full())
318 {
319 if ((millis() - start_time) >= timeout_ms)
320 {
321 return -1;
322 }
323 nop();
324 }
325 return 0;
326}
327
328int32_t uart_wait_rx_data(uint32_t timeout_ms)
329{
330 uint32_t start_time = millis();
331
332 while (uart_rx_empty())
333 {
334 if ((millis() - start_time) >= timeout_ms)
335 {
336 return -1;
337 }
338 nop();
339 }
340 return 0;
341}
342
343int32_t uart_write_byte(uint8_t data, uint32_t timeout_ms)
344{
345 if (uart_tx_full())
346 {
347 int32_t ret = uart_wait_tx_full(timeout_ms);
348 if (ret != 0)
349 {
350 return ret;
351 }
352 }
353
354 uart_tx_full();
355 HWREG32(UART_BASE_ADDR + UART_TX_OFFSET) = (uint32_t)data;
356 return 0;
357}
358
359int32_t uart_putchar(char c, uint32_t timeout_ms)
360{
361 return uart_write_byte((uint8_t)c, timeout_ms);
362}
363
368
369int32_t uart_write_buffer(const uint8_t *buffer, uint32_t length, uint32_t timeout_ms)
370{
371 if (buffer == NULL || length == 0)
372 {
373 return -1;
374 }
375
376 for (uint32_t i = 0; i < length; i++)
377 {
378 int32_t ret = uart_write_byte(buffer[i], timeout_ms);
379 if (ret != 0)
380 {
381 return ret;
382 }
383 }
384
385 return 0;
386}
387
388int32_t uart_read_byte(uint8_t *data, uint32_t timeout_ms)
389{
390 int32_t ret = uart_wait_rx_data(timeout_ms);
391 if (ret != 0)
392 {
393 return ret;
394 }
395 *data = (uint8_t)HWREG32(UART_BASE_ADDR + UART_RX_OFFSET);
396 return 0;
397}
398
399char uart_getchar(uint32_t timeout_ms)
400{
401 uint8_t byte;
402 int32_t ret = uart_read_byte(&byte, timeout_ms);
403 if (ret != 0)
404 {
405 return -1;
406 }
407 return (char)byte;
408}
409
410int32_t uart_read_buffer(uint8_t *buf, uint32_t length, uint32_t timeout_ms)
411{
412 if (buf == 0)
413 {
414 return -1;
415 }
416 for (uint32_t i = 0; i < length; i++)
417 {
418 int32_t ret = uart_read_byte(&buf[i], timeout_ms);
419 if (ret < 0)
420 {
421 return ret;
422 }
423 }
424 return 0;
425}
426
427void uart_send_uint32(uint32_t value, uint32_t timeout_ms)
428{
429 uint8_t buffer[4];
430 buffer[0] = (value >> 24) & 0xFF;
431 buffer[1] = (value >> 16) & 0xFF;
432 buffer[2] = (value >> 8) & 0xFF;
433 buffer[3] = value & 0xFF;
434
435 uart_write_buffer(buffer, sizeof(buffer), timeout_ms);
436}
437
438void uart_print_uint(uint32_t num, int32_t base)
439{
440 char buffer[33];
441
442 if (base < 2 || base > 16)
443 {
444 return;
445 }
446
447 if (num == 0)
448 {
450 return;
451 }
452
453 int i = 0;
454 while (num > 0)
455 {
456 uint32_t digit = num % base;
457 buffer[i++] = (digit < 10) ? ('0' + digit) : ('A' + (digit - 10));
458 num /= base;
459 }
460
461 while (i--)
462 {
464 }
465}
466
467void uart_print_int(int32_t num)
468{
469 if (num < 0)
470 {
472 num = -num;
473 }
474
475 uart_print_uint((uint32_t)num, 10);
476}
477
478void uart_print(const char *s)
479{
480 while (*s)
481 {
483 }
484}
485
486// ----------------------- WGR-V -----------------------
487//
488// Zeit Funktionen
489//
490//------------------------------------------------------
491
492uint32_t get_sys_clk(void)
493{
495}
496
497void millis_reset(void)
498{
499 HWREG32(TIME_BASE_ADDR + TIME_MS_L_OFFSET) = (uint32_t)0;
500}
501
502uint64_t millis_long(void)
503{
504 uint32_t high1, high2, low;
505
506 do
507 {
511 } while (high1 != high2);
512
513 return (((uint64_t)high1) << 32) | low;
514}
515
516uint32_t millis(void)
517{
519}
520
521void micros_reset(void)
522{
524}
525
526uint64_t micros_long(void)
527{
528 uint32_t high1, high2, low;
529
530 do
531 {
535 } while (high1 != high2);
536
537 return (((uint64_t)high1) << 32) | low;
538}
539
540uint32_t micros(void)
541{
543}
544
545void delay(uint32_t ms)
546{
547 uint32_t start_time = millis();
548 while ((millis() - start_time) < ms)
549 {
550 nop();
551 }
552}
553
554void delay_micro(uint32_t microsec)
555{
556 uint32_t start_time = micros();
557 while ((micros() - start_time) < microsec)
558 {
559 nop();
560 }
561}
562
563// ----------------------- WGR-V -----------------------
564//
565// PWM Funktionen
566//
567//------------------------------------------------------
568
569void pwm_set_period(uint32_t period)
570{
572}
573
574void pwm_set_duty(uint32_t duty)
575{
577}
578
579uint32_t pwm_get_period(void)
580{
582}
583
584uint32_t pwm_get_duty(void)
585{
587}
588
589uint32_t pwm_get_counter(void)
590{
592}
593
594void pwm_set_control(uint32_t control)
595{
597}
598
599uint32_t pwm_get_control(void)
600{
602}
603
604void pwm_set_mode(uint8_t enable_pwm)
605{
606 uint32_t ctrl = HWREG32(PWM_BASE_ADDR + PWM_CTRL_OFFSET);
607 if (enable_pwm)
608 ctrl |= 0x1;
609 else
610 ctrl &= ~0x1;
612}
613
614void pwm_set_50_percent_mode(uint8_t enable)
615{
616 uint32_t ctrl = HWREG32(PWM_BASE_ADDR + PWM_CTRL_OFFSET);
617 if (enable)
618 ctrl |= 0x2;
619 else
620 ctrl &= ~0x2;
622}
623
624void pwm_set_pre_counter(uint16_t pre_counter)
625{
626 uint32_t ctrl = HWREG32(PWM_BASE_ADDR + PWM_CTRL_OFFSET);
627 ctrl = (ctrl & 0x0000FFFF) | (((uint32_t)pre_counter) << 16);
629}
630
632{
633 uint32_t pwm_ctrl = HWREG32(PWM_BASE_ADDR + PWM_CTRL_OFFSET);
634 return (pwm_ctrl >> 16);
635}
636
637// ----------------------- WGR-V -----------------------
638//
639// GPIO Funktionen
640//
641//------------------------------------------------------
642
643void gpio_write_pin(uint8_t pin, uint8_t value)
644{
645 if (pin < GPIO_PIN_COUNT)
646 {
648 }
649}
650
652{
653 return (uint8_t)(HWREG32(GPIO_BASE_ADDR + GPIO_IN_OFFSET) & 0xFF);
654}
655
656uint8_t gpio_read_pin(uint8_t pin)
657{
658 if (pin < GPIO_PIN_COUNT)
659 {
660 return (gpio_read_all_pins() >> pin) & 0x01;
661 }
662 return 0;
663}
664
665void gpio_set_direction(uint8_t pin, uint8_t direction)
666{
667 uint32_t dir = HWREG32(GPIO_BASE_ADDR + GPIO_DIR_OFFSET);
668
669 if (direction)
670 {
671 dir |= (1 << pin);
672 }
673 else
674 {
675 dir &= ~(1 << pin);
676 }
677
679}
680
681uint8_t gpio_read_direction(uint8_t pin)
682{
683 uint32_t dir = HWREG32(GPIO_BASE_ADDR + GPIO_DIR_OFFSET);
684 return (dir >> pin) & 0x01;
685}
void pwm_set_mode(uint8_t enable_pwm)
Aktiviert oder deaktiviert den PWM-Modus.
Definition wgrhal.c:604
uint32_t uart_is_busy(void)
Prüft, ob die UART beschäftigt ist.
Definition wgrhal.c:288
void pwm_set_50_percent_mode(uint8_t enable)
Aktiviert oder deaktiviert den 50%-Modus des PWM.
Definition wgrhal.c:614
void gpio_set_direction(uint8_t pin, uint8_t direction)
Setzt die Richtung eines GPIO-Pins.
Definition wgrhal.c:665
uint32_t uart_tx_empty(void)
Prüft, ob der UART-Sende-Puffer leer ist.
Definition wgrhal.c:308
int32_t uart_read_buffer(uint8_t *buf, uint32_t length, uint32_t timeout_ms)
Liest einen Puffer von Bytes von der UART-Schnittstelle.
Definition wgrhal.c:410
void gpio_write_pin(uint8_t pin, uint8_t value)
Schreibt einen Wert auf einen GPIO-Pin.
Definition wgrhal.c:643
uint32_t get_sys_clk(void)
Liest die Systemtaktfrequenz.
Definition wgrhal.c:492
int32_t uart_write_buffer(const uint8_t *buffer, uint32_t length, uint32_t timeout_ms)
Sendet einen Puffer von Bytes über die UART-Schnittstelle.
Definition wgrhal.c:369
void int_to_str(int32_t num, int base, char *str)
Konvertiert eine Ganzzahl in einen String.
Definition wgrhal.c:122
char uart_getchar(uint32_t timeout_ms)
Liest ein Zeichen von der UART-Schnittstelle.
Definition wgrhal.c:399
uint8_t gpio_read_direction(uint8_t pin)
Liest die Richtung eines GPIO-Pins.
Definition wgrhal.c:681
int32_t parse_int_multi(const char *str, const char **next)
Parst eine Ganzzahl aus einem String und gibt den Zeiger auf das nächste Zeichen zurück.
Definition wgrhal.c:205
int32_t uart_read_byte(uint8_t *data, uint32_t timeout_ms)
Liest ein Byte von der UART-Schnittstelle.
Definition wgrhal.c:388
uint32_t uart_rx_full(void)
Prüft, ob der UART-Empfangspuffer voll ist.
Definition wgrhal.c:293
uint32_t uart_rx_empty(void)
Prüft, ob der UART-Empfangspuffer leer ist.
Definition wgrhal.c:298
uint8_t gpio_read_all_pins(void)
Liest alle GPIO-Pins.
Definition wgrhal.c:651
int32_t parse_integer(const char *str)
Parst einen String in eine Ganzzahl.
Definition wgrhal.c:165
int32_t uart_wait_rx_data(uint32_t timeout_ms)
Wartet darauf, dass Daten im Empfangspuffer vorhanden sind, bis zu einer Zeitüberschreitung.
Definition wgrhal.c:328
void delay_micro(uint32_t microsec)
Verzögert die Ausführung um eine bestimmte Anzahl an Mikrosekunden.
Definition wgrhal.c:554
void uart_set_baud(baud_sel_t baud)
Setzt die Baudrate der UART-Schnittstelle.
Definition wgrhal.c:269
int32_t uart_putchar(char c, uint32_t timeout_ms)
Sendet ein Zeichen über die UART-Schnittstelle.
Definition wgrhal.c:359
uint32_t pwm_get_duty(void)
Liest das aktuelle PWM-Duty-Cycle.
Definition wgrhal.c:584
uint32_t uart_get_status(void)
Liest den Status der UART-Schnittstelle.
Definition wgrhal.c:278
void pwm_set_period(uint32_t period)
Setzt die PWM-Periode.
Definition wgrhal.c:569
uint64_t millis_long(void)
Liest einen langen Millisekunden-Zähler.
Definition wgrhal.c:502
void pwm_set_pre_counter(uint16_t pre_counter)
Setzt den Pre-Counter für PWM.
Definition wgrhal.c:624
void debug_write(uint32_t value)
Schreibt einen Wert in das Debug-Register.
Definition wgrhal.c:246
void micros_reset(void)
Setzt den Mikrosekunden-Zähler zurück.
Definition wgrhal.c:521
void uart_putchar_default_timeout(char c)
Sendet ein Zeichen über die UART-Schnittstelle mit voreingestelltem Timeout.
Definition wgrhal.c:364
void delay(uint32_t ms)
Verzögert die Ausführung um eine bestimmte Anzahl an Millisekunden.
Definition wgrhal.c:545
void uart_print(const char *s)
Gibt einen String über die UART aus.
Definition wgrhal.c:478
void pwm_set_control(uint32_t control)
Setzt den PWM-Kontrollwert.
Definition wgrhal.c:594
int32_t strcmp(const char *s1, const char *s2)
Vergleicht zwei Strings.
Definition wgrhal.c:86
void pwm_set_duty(uint32_t duty)
Setzt das PWM-Duty-Cycle.
Definition wgrhal.c:574
void * memcpy(void *dest, const void *src, uint32_t n)
Kopiert n Bytes von src nach dest.
Definition wgrhal.c:26
void millis_reset(void)
Setzt den Millisekunden-Zähler zurück.
Definition wgrhal.c:497
void uart_disable(void)
Deaktiviert die UART-Schnittstelle.
Definition wgrhal.c:263
void uart_send_uint32(uint32_t value, uint32_t timeout_ms)
Sendet einen 32-Bit-Wert über die UART-Schnittstelle.
Definition wgrhal.c:427
uint32_t uart_is_ready(void)
Prüft, ob die UART bereit ist.
Definition wgrhal.c:283
uint32_t uart_tx_full(void)
Prüft, ob der UART-Sende-Puffer voll ist.
Definition wgrhal.c:303
uint32_t pwm_get_counter(void)
Liest den aktuellen PWM-Zählerstand.
Definition wgrhal.c:589
void * memset(void *dest, int32_t c, uint32_t n)
Setzt n Bytes im Zielpuffer auf den Wert c.
Definition wgrhal.c:37
int32_t uart_wait_tx_full(uint32_t timeout_ms)
Wartet darauf, dass der Sende-Puffer voll wird, bis zu einer Zeitüberschreitung.
Definition wgrhal.c:313
int32_t strncmp(const char *s1, const char *s2, uint32_t n)
Vergleicht maximal n Zeichen zweier Strings.
Definition wgrhal.c:96
void * memmove(void *dest, const void *src, uint32_t n)
Kopiert n Bytes von src nach dest, wobei sich überlappende Speicherbereiche korrekt behandelt werden.
Definition wgrhal.c:47
char * strcpy(char *dest, const char *src)
Kopiert einen String von src nach dest.
Definition wgrhal.c:114
void uart_print_uint(uint32_t num, int32_t base)
Gibt eine positive Ganzzahl in einem bestimmten Zahlensystem über die UART aus.
Definition wgrhal.c:438
int32_t uart_write_byte(uint8_t data, uint32_t timeout_ms)
Sendet ein Byte über die UART-Schnittstelle.
Definition wgrhal.c:343
uint32_t millis(void)
Liest den aktuellen Millisekunden-Zähler (32-Bit).
Definition wgrhal.c:516
uint64_t micros_long(void)
Liest einen langen Mikrosekunden-Zähler.
Definition wgrhal.c:526
uint8_t gpio_read_pin(uint8_t pin)
Liest den Zustand eines bestimmten GPIO-Pins.
Definition wgrhal.c:656
uint32_t pwm_get_control(void)
Liest den aktuellen PWM-Kontrollwert.
Definition wgrhal.c:599
uint32_t strlen(const char *s)
Bestimmt die Länge eines Strings.
Definition wgrhal.c:76
void uart_print_int(int32_t num)
Gibt eine Ganzzahl über die UART aus.
Definition wgrhal.c:467
uint32_t pwm_get_period(void)
Liest die aktuelle PWM-Periode.
Definition wgrhal.c:579
uint32_t micros(void)
Liest den aktuellen Mikrosekunden-Zähler (32-Bit).
Definition wgrhal.c:540
uint32_t pwm_get_pre_counter(void)
Liest den aktuellen Pre-Counter für PWM.
Definition wgrhal.c:631
void uart_enable(void)
Aktiviert die UART-Schnittstelle.
Definition wgrhal.c:257
Headerdatei der WGRHAL-Bibliothek.
#define GPIO_OUT_OFFSET
Offset für das GPIO-Ausgangsregister.
Definition wgrhal.h:126
#define GPIO_PIN_COUNT
Anzahl der verfügbaren GPIO-Pins.
Definition wgrhal.h:134
#define HWREG32(addr)
Makro zur Adressierung von speicherabgebildeten Registern.
Definition wgrhal.h:27
#define TIME_MS_H_OFFSET
Offset für die höheren 32-Bit des Millisekundenzählers.
Definition wgrhal.h:76
#define UART_RX_OFFSET
Offset für das UART-Empfangsregister.
Definition wgrhal.h:63
#define PWM_BASE_ADDR
Basisadresse für PWM-Funktionen.
Definition wgrhal.h:93
#define GPIO_BASE_ADDR
Basisadresse für GPIO-Funktionen.
Definition wgrhal.h:114
#define UART_BASE_ADDR
Basisadresse für den UART.
Definition wgrhal.h:43
#define GPIO_DIR_OFFSET
Offset für das GPIO-Richtungsregister.
Definition wgrhal.h:118
#define GPIO_OUT_STEP
Schrittweite zwischen den Ausgangsregistern der einzelnen Pins.
Definition wgrhal.h:130
#define DEBUG_ADDR
Basisadresse für das Debug-Register.
Definition wgrhal.h:38
#define GPIO_IN_OFFSET
Offset für das GPIO-Eingangsregister.
Definition wgrhal.h:122
#define PWM_PERIOD_OFFSET
Offset für das PWM-Periode-Register.
Definition wgrhal.h:97
#define nop()
Nop-Operation.
Definition wgrhal.h:33
#define TIME_MIK_L_OFFSET
Offset für die niederwertigen 32-Bit des Mikrosekundenzählers.
Definition wgrhal.h:80
#define TIME_MS_L_OFFSET
Offset für die niederwertigen 32-Bit des Millisekundenzählers.
Definition wgrhal.h:72
#define TIME_MIK_H_OFFSET
Offset für die höheren 32-Bit des Mikrosekundenzählers.
Definition wgrhal.h:84
#define UART_CTRL_OFFSET
Offset für das UART-Steuerregister.
Definition wgrhal.h:47
#define PWM_COUNTER_OFFSET
Offset für das PWM-Zählerregister.
Definition wgrhal.h:105
#define UART_BAUD_OFFSET
Offset für das UART-Baudratenregister.
Definition wgrhal.h:51
#define DEFAULT_TIMEOUT
Standard-Zeitüberschreitung in Millisekunden.
Definition wgrhal.h:139
#define UART_STATUS_OFFSET
Offset für das UART-Statusregister.
Definition wgrhal.h:55
#define SYS_CLK_OFFSET
Offset für den Systemtakt.
Definition wgrhal.h:88
#define PWM_CTRL_OFFSET
Offset für das PWM-Steuerregister.
Definition wgrhal.h:109
#define PWM_DUTY_OFFSET
Offset für das PWM-Duty-Cycle-Register.
Definition wgrhal.h:101
#define UART_TX_OFFSET
Offset für das UART-Sende-Register.
Definition wgrhal.h:59
#define TIME_BASE_ADDR
Basisadresse für Zeitfunktionen.
Definition wgrhal.h:68