Ich verwende ATmega8 und ich versuche, Zeichenfolge über USART (in printf
Stil), die eine Variable enthalten. Ich verwende Atmel Studio 6.2
als IDE für AVR-Programmierung. Hier ist mein Code: -Übergabe einer Variablen in String in Embedded C
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
void USARTInit(uint16_t ubrr_value) // initialize USART
{
UBRRL = ubrr_value;
UBRRH = (ubrr_value>>8);
UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
}
void USARTWriteChar(char data) // send character using USART
{
while(!(UCSRA & (1<<UDRE)));
UDR=data;
}
void send_string(char s[]) // send string using USART
{
int i =0;
while (s[i] != 0x00)
{
USARTWriteChar(s[i]);
i++;
}
USARTWriteChar('\n');
}
int main(void)
{
USARTInit(51);
char val='A';
while(1)
{
send_string("Value = %c",val);
}
}
Nun, wenn ich meinen Code zu kompilieren ich diesen Fehler hätte: -
too many arguments to function 'send_string`
Also, klar ist es nicht akzeptieren %c
, wie es in der C-Programmierung funktioniert. Gibt es eine Möglichkeit in embedded C
eine Variable in einem String zu übergeben?
Es gibt keine Sprache „Embedded C“! Und diese Funktion ist nicht Teil der Standard-Bibliothek, also ** funktioniert nicht in "C-Programmierung". Vielleicht möchten Sie zuerst lernen, C und welche Funktionen sind. – Olaf