1

Explorer 16ボードで上記のpicコントローラーを使用しています。UART を構成しようとしていますが、機能していません。コードは次のようになります。

enter code here
#define Bit8_No_Parity          0x00
#define Bit8_E_Parity           0x01
#define Bit8_O_Parity           0x10

#define Stop_Bits_1             0
#define Stop_Bits_2             1


U2MODEBITS U2mode;
U2STABITS  U2Sta;

void Uart2_Init()
{
    U2BRG = 207;            // 9600 for 8 mhz
    U2MODE = 0x8000;
    U2STA  = 0x8400;
    U2mode.PDSEL = Bit8_No_Parity ;

    U2mode.STSEL = Stop_Bits_1;
    U2mode.BRGH = 1;


    U2Sta.UTXISEL1 = 1;
    U2Sta.UTXISEL0 = 0;
    U2mode.UARTEN  = 1;

    U2Sta.UTXEN    = 1;




 }


void Transmit_Byte(UCHAR_8 byte)
{
   while(U2Sta.UTXBF != 0 );
   U2TXREG = byte;

}

上記のコードは機能しません。メイン ファイルの構成ビットと Uart init 関数のみを初期化します。助けを求めています。

よろしくサンケット

4

1 に答える 1

0

ヘッダーが何であれ、定義済みのレジスタ定義を使用する代わりに、レジスタのレイアウト(U2MODEBITS、U2STABITS)で変数(U2mode、U2sta)を定義しているようです。

これは、レジスタには何も書き込まれないため、何も起こらないことを意味します。宣言を削除し、すべて大文字 (C では大文字と小文字が区別されます!) の実数ビット バージョンのレジスタに書き込みます。U2STATBITS、U2MODEBITS。これらは uint サイズの U2STA と U2MODE をメモリ内でオーバーレイするため、それらへの書き込みを混在させることができます。

于 2015-11-06T14:43:11.093 に答える