私はATmega8を使用していますが、変数を含むUSART(printf
スタイル)の文字列を送信しようとしています。AVRプログラミングのIDEとしてAtmel Studio 6.2
を使用しています。ここに私のコードは次のとおりです。 - 私は私のコードをコンパイルするとき埋め込み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);
}
}
は今、私はこのエラーを得た: - それはCプログラミングの場合と同様
too many arguments to function 'send_string`
だから、明らかにそれは%c
を受け付けていません。 embedded C
に文字列の変数を渡す方法はありますか?
何語「組み込みC」はありません!その関数は標準ライブラリの一部ではないので、 "Cプログラミング"では**動作しません。あなたは、まずCと関数が何であるかを知りたいかもしれません。 – Olaf