[戻る]
一括表示

USART送信 ワーニング 投稿者:radio 投稿日:2017/03/16(Thu) 16:53:14 No.839

PIC18F2320 + C18コンパイラを使用しています。

次のサイトを参考にしてUSART通信プログラムを作成しています。
[参考サイト]
http://www.picfun.com/Sensor/equipj77.html

USART通信用プログラムをコンパイルすると、
大量のワーニングが出てしまい困っています。

ワーニングの原因が分かりません。どなたか教えてください。

//変数の宣言
static unsigned int Direction;
static unsigned long MRdata,MLdata;

//USART送信
putsUSART("S");
putsUSART("S");
putsUSART(Direction);
putsUSART(MLdata >> 8);
putsUSART(MLdata & 0x00FF);
putsUSART(MRdata >> 8);
putsUSART(MRdata & 0x00FF);
putsUSART(~Direction);
putsUSART(~(MLdata >> 8));
putsUSART(~(MLdata & 0x00FF));
putsUSART(~(MRdata >> 8));
putsUSART(~(MRdata & 0x00FF));
putsUSART("E");


//ワーニング
Warning [2066] type qualifier mismatch in assignment
Warning [2066] type qualifier mismatch in assignment
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2054] suspicious pointer conversion
C
Warning [2066] type qualifier mismatch in assignment

Re: USART送信 ワーニング 投稿者:n 投稿日:2017/03/16(Thu) 21:42:04 No.840

radioさん

はじめましてnです。

CCSCのputc()に対応する関数は、
WriteUSART()だと思います。

void putsUSART(char *data);
void WriteUSART(char data);

putsUSART()ですと、引数はchar型データへのポインタ型になります。
一連の警告は、これが原因でしょう。
Cでは、"S"と'S'は似ているが異なる型です(ポインタと整数)
(アセンブラでは、"S"と'S'が同じになるものが多数派です)

以下のコードでご確認ください。
(タイミングをとるコードが必要かもしれません)

//USART送信
WriteUSART('S');//putsUSART("S");同等
WriteUSART('S');
WriteUSART(Direction);
WriteUSART(MLdata >> 8);
WriteUSART(MLdata & 0x00FF);
WriteUSART(MRdata >> 8);
WriteUSART(MRdata & 0x00FF);
WriteUSART(~Direction);
WriteUSART(~(MLdata >> 8));
WriteUSART(~(MLdata & 0x00FF));
WriteUSART(~(MRdata >> 8));
WriteUSART(~(MRdata & 0x00FF));
WriteUSART('E');

> PIC18F2320 + C18コンパイラを使用しています。
>
> 次のサイトを参考にしてUSART通信プログラムを作成しています。
> [参考サイト]
> http://www.picfun.com/Sensor/equipj77.html
>
> USART通信用プログラムをコンパイルすると、
> 大量のワーニングが出てしまい困っています。
>
> ワーニングの原因が分かりません。どなたか教えてください。
>
> //変数の宣言
> static unsigned int Direction;
> static unsigned long MRdata,MLdata;
>
> //USART送信
> putsUSART("S");
> putsUSART("S");
> putsUSART(Direction);
> putsUSART(MLdata >> 8);
> putsUSART(MLdata & 0x00FF);
> putsUSART(MRdata >> 8);
> putsUSART(MRdata & 0x00FF);
> putsUSART(~Direction);
> putsUSART(~(MLdata >> 8));
> putsUSART(~(MLdata & 0x00FF));
> putsUSART(~(MRdata >> 8));
> putsUSART(~(MRdata & 0x00FF));
> putsUSART("E");
>
>
> //ワーニング
> Warning [2066] type qualifier mismatch in assignment
> Warning [2066] type qualifier mismatch in assignment
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2054] suspicious pointer conversion
> C
> Warning [2066] type qualifier mismatch in assignment

Re^2: USART送信 ワーニング 投稿者:tanaka 投稿日:2017/03/19(Sun) 00:47:17 No.843

> radioさん
>
> はじめましてnです。
>
> CCSCのputc()に対応する関数は、
> WriteUSART()だと思います。
>
> void putsUSART(char *data);
> void WriteUSART(char data);
>
> putsUSART()ですと、引数はchar型データへのポインタ型になります。
> 一連の警告は、これが原因でしょう。
> Cでは、"S"と'S'は似ているが異なる型です(ポインタと整数)
> (アセンブラでは、"S"と'S'が同じになるものが多数派です)
>
> 以下のコードでご確認ください。
> (タイミングをとるコードが必要かもしれません)
>
> //USART送信
> WriteUSART('S');//putsUSART("S");同等
> WriteUSART('S');
> WriteUSART(Direction);
> WriteUSART(MLdata >> 8);
> WriteUSART(MLdata & 0x00FF);
> WriteUSART(MRdata >> 8);
> WriteUSART(MRdata & 0x00FF);
> WriteUSART(~Direction);
> WriteUSART(~(MLdata >> 8));
> WriteUSART(~(MLdata & 0x00FF));
> WriteUSART(~(MRdata >> 8));
> WriteUSART(~(MRdata & 0x00FF));
> WriteUSART('E');
>
> > PIC18F2320 + C18コンパイラを使用しています。
> >
> > 次のサイトを参考にしてUSART通信プログラムを作成しています。
> > [参考サイト]
> > http://www.picfun.com/Sensor/equipj77.html
> >
> > USART通信用プログラムをコンパイルすると、
> > 大量のワーニングが出てしまい困っています。
> >
> > ワーニングの原因が分かりません。どなたか教えてください。
> >
> > //変数の宣言
> > static unsigned int Direction;
> > static unsigned long MRdata,MLdata;
> >
> > //USART送信
> > putsUSART("S");
> > putsUSART("S");
> > putsUSART(Direction);
> > putsUSART(MLdata >> 8);
> > putsUSART(MLdata & 0x00FF);
> > putsUSART(MRdata >> 8);
> > putsUSART(MRdata & 0x00FF);
> > putsUSART(~Direction);
> > putsUSART(~(MLdata >> 8));
> > putsUSART(~(MLdata & 0x00FF));
> > putsUSART(~(MRdata >> 8));
> > putsUSART(~(MRdata & 0x00FF));
> > putsUSART("E");
> >
> >
> > //ワーニング
> > Warning [2066] type qualifier mismatch in assignment
> > Warning [2066] type qualifier mismatch in assignment
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2054] suspicious pointer conversion
> > C
> > Warning [2066] type qualifier mismatch in assignment

情報ありがとうございます。

USART送信 ワーニング[解決] 投稿者:radio 投稿日:2017/03/21(Tue) 09:01:16 No.846

n様

情報ありがとうございました。
無事解決できました。

- WebForum -