PIC24FJ128GA010 Uart не работает

Я использую вышеупомянутый контроллер pic на плате Explorer 16. Я пытаюсь настроить 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 в своем основном файле. Ищу помощи.

С уважением Санкет


person Sanky    schedule 23.10.2015    source источник


Ответы (1)


Кажется, вы определяете переменные (U2mode, U2sta) с расположением регистров (U2MODEBITS, U2STABITS) вместо использования предопределенных определений регистров в любом заголовке.

Это означает, что в регистры ничего не записывается, и поэтому ничего не происходит. Удалите объявления и запишите реальные битовые версии регистров, которые все в верхнем регистре (C чувствителен к регистру!) U2STATBITS, U2MODEBITS. Они накладываются на U2STA и U2MODE размера uint в памяти, так что вы можете смешивать запись в них.

person Marco van de Voort    schedule 06.11.2015