[C] uint8_t und spriftf()

OP #6366635
Lesenswert?

Mahlzeit,
Ich Programmiere einen STM32 Controller in STM CubeIDE. Die Sprache ist 
C.
Welchen Datentyp verwendet ihr für Strings? ich würde uint8_t[] nehmen..

uint8_t s[50];
sprintf(s,"Hallo ");

Wirft mir folgende Warning:
pointer targets in passing argument 1 of 'sprintf' differ in signedness 
[-Wpointer-sign]

was würdet ihr tun? char nehmen?

beste Grüße
OP #6366673
Lesenswert?

weil ich zB eine Methode habe die strings in uint8_t erwartet ...

static void tx_com(uint8_t *tx_buffer, uint16_t len)
{
  HAL_UART_Transmit(&huart2, tx_buffer, len, 1000);
}

könnte ich natürlich abändern, aber HAL_UART_Transmit benötigt auch 
uint8_t :


HAL_StatusTypeDef HAL_UART_Transmit (UART_HandleTypeDef * huart, uint8_t 
* pData, uint16_t Size,
uint32_t Timeout)  [aus : Description of STM32L4/L4+ HAL]
#6366683
Lesenswert?

Marten K. schrieb:
> weil ich zB eine Methode habe die strings in uint8_t erwartet ...

Die erwartet einen Rohdaten-Puffer. Da ist ein Zeiger auf uint8_t ja 
passend. Es muss ja kein String sein, den du überträgst.
Was man also macht ist, dass man es an der Stelle, wo man die Daten an 
diese Funktion übergibt, umwandelt, wofür in diesem Fall ein Cast 
reicht.
Sprich: Intern für Strings immer char nehmen und dann an der einen 
Stelle, an der man es für die Ausgabe an die Lowlevel-Funktion übergibt, 
wird nach uint8_t gecastet.

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