1

我在 explorer 16 板上使用上面提到的 pic 控制器。我正在尝试配置 U​​ART,但它不起作用我的代码看起来像这样。

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 初始化函数。寻求帮助。

问候 Sanket

4

1 回答 1

0

您似乎使用寄存器布局(U2MODEBITS,U2STABITS)定义变量(U2mode,U2sta),而不是在任何标题中使用预定义的寄存器定义。

这意味着没有任何内容写入寄存器,因此没有任何反应。删除声明并写入全部大写的寄存器的真实位版本(C 区分大小写!)U2STATBITS,U2MODEBITS。这些覆盖内存中的 uint 大小的 U2STA 和 U2MODE,因此您可以混合写入它们。

于 2015-11-06T14:43:11.093 回答