'sd_raw_write' makes pointer from integer without a cast

Gast #1288315
Lesenswert?

Folgender code funktioniert nicht, ich bekomme die Warnung:
(Ulrich Radig, sdcard lib)

../main.c:100:
warning: passing argument 2 of 'sd_raw_write' makes pointer from integer 
without a cast

auch wenn ich (char *) myByte verwende bleibt das Problem.


uint8_t myByte;

sd_raw_write(0,myByte,1);

myByte = 0;

sd_raw_read(0,myByte,1);

puart_putc(myByte);
Gast #1288885
Lesenswert?

bin etwas weiter..

ich versuche mir ne put string funktion zu schreiben


void sd_puts(const char *s) {
  while (*s) {
    sd_raw_write(s,&s,1);
    s++;
  }

nur bekomme da zwei warnungen:
../main.c:57: warning: passing argument 1 of 'sd_raw_write' makes 
integer from pointer without a cast

../main.c:57: warning: passing argument 2 of 'sd_raw_write' from 
incompatible pointer type
Gast #1288915
Lesenswert?

Ich versuch doch nur ein einfachen uint32 auf die sd karte zu schreiben,
und das beginnend ab position 0.


void sd_put32(uint32_t data) {
  uint8_t ggg = 0;
  char string[11];
  const char s;

  ultoa(data, string, 10);

  while (*s) {
    sd_raw_write(ggg,*s,1);
  ggg++;
  s++;
}


die funktion aus der SD Card lib:

uint8_t sd_raw_write(offset_t offset, const uint8_t* buffer, uintptr_t 
length)
Gast #1288926
Lesenswert?

na du hast eine funktion um 8bit zu schreiben ...

und willst 32bit schreiben
warum nicht also die 32bit in 4x 8bit daten verpflücken

(unsigned char*) 32bitdaten  sind die unteren 8bit
senden
(unsigned char*) 32bitdaten>>8  die 32bit um 8 nach rechts schieben
die nächsten 8bit senden
...
...
...
...
bis die  oberen 8bit erreicht sind und weg ...
#1288968
Lesenswert?

uint8_t sd_raw_write(offset_t offset, const *uint8_t** buffer, 
uintptr_t length)


Bin ich der Einzige der es blöd findet, dass man Fettdruck hier durch 
Sterne davor und dahinter bekommt? Bzw. in so einem Fall wie oben nicht 
bekommt? [ b ]Fettdruck[ /b ] ist doch besser... (und wieso zum Teufel 
soll das Spam sein?!)

Nun gut, er will also einen Zeiger auf einen Puffer, der 8 Bit hat und 
unsigned ist. Und const. Dann gib ihm doch genau das.
#1289775
Lesenswert?

1
uint8_t sd_raw_write(offset_t offset, const uint8_t* buffer, uintptr_t length)

> Nun gut, er will also einen Zeiger auf einen Puffer, der 8 Bit hat und
> unsigned ist. Und const.

Das const spielt hier keine Rolle.
Es ist im Grunde lediglich die Zusicherung der Funktion, dass sie die 
Bytes nicht ändern wird, auf die sie eine Adresse erhält.

> Dann gib ihm doch genau das.

Yep.
1
uint32_t data;
2
sd_raw_write( 0, (uint8_t*)&data, sizeof(data) );

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren