UART Txのプログラムを入れてみる。

出来た事

1.UART PJT作成, Txのプログラム追加と動作確認
2.C言語をちょっと学ぶ。(文字列の変数)


1.UART PJT作成, Txのプログラム追加と動作確認

さていよいよ、プログラムに取り掛かっていきます。

まずはエレキジャックさんの記事の(6),(7)をやっていきます。

LPC1100がLPC1343になるだけです。
問題なく出来ました(^^)

Hyper terminalでHello worldがちゃんと出てます。



2.C言語をちょっと学ぶ。(文字列の変数)

次に Hello worldでやったように
文字列の変数を使って以下のようにしてみました。
エレキジャックさんの記事の該当部分と比較してください。

#include // 追加0
#include // 追加1
#include // 追加2


// Main loop
int main(void) {
uart_init(9600);

//追加3 Start
int dat =128; // EEPROMの数値データのイメージです。
char str2[3]; // 文字列の型
itoa(dat,str2,10); // 数値データを文字列に変換
char str[]="Data="; // 付加する文字列。
//追加3 End

uart_puts("%s%s",str,str2); // 変更1

// Enter an infinite loop, just incrementing a counter
volatile static int i = 0 ;
while(1) {
i++ ;
}
return 0 ;

するとエラーがでました。(><)

uart_puts("%s%s",str,str2); // 変更1

の部分が悪いようです。
too many arguments to function 'uart_puts'
というエラーが出ています。

uart_putsはエレキジャックさんが作った関数です。

int uart_puts(const char *s) {
int n;
for (n = 0; *s; s++, n++) {
uart_putc(*s);
}
return n;

どうやらuart_putのconst char *sの部分を何とか直すか

uart_puts("%s%s",str,str2)と記載した
("%s%s",str,str2)を直す必要がありそうです。

今回は下のほうの
uart_puts("%s%s",str,str2)を直しました。
どうやら%sを使った代入がダメなようです。
()内は文字列を入れなければならないようなので
以下のようにしたらうまくいきました。
(黄色い部分を変更したら、ちゃんとコンパイル出来て
 Hyperterminalでも出ました)