Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: sk-mlpc2478 не работает UART
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
lecko
Всем привет!

Начал программировать для платы SK-MLPC2478. попробовал скомпилировать код из книги Тревора (привожу ниже). Однако, никакого вывода в терминале не вижу вообще. Догадываюсь, что что-то криво настроено, однако пока разобраться не могу. в чем может быть причина?

Код
#include <lpc23xx.h>
#include "LCD.h"
void init_serial (void);
unsigned char putchar (unsigned char ch);
unsigned char getchar (void);

unsigned int flasher = 0x0000000;     
int main (void)
{
    
unsigned int delay; //
    /* Reset all GPIO pins to default: primary function */



    PINSEL0 = 0x00000000;
    PINSEL1 = 0x00000000;
    PINSEL2 = 0x00000000;
    PINSEL3 = 0x00000000;
    PINSEL4 = 0x00000000;
    PINSEL5 = 0x00000000;
    PINSEL6 = 0x00000000;
    PINSEL7 = 0x00000000;
    PINSEL8 = 0x00000000;
    PINSEL9 = 0x00000000;
    PINSEL10 = 0x00000000;
    
    IODIR0 = 0x00000000;
    IODIR1 = 0x00000000;
      IOSET0 = 0x00000000;
    IOSET1 = 0x00000000;
    
    FIO0DIR = 0x00000000;
    FIO1DIR = 0x00000000;
    FIO2DIR = 0x00000000;
    FIO3DIR = 0x00000000;
    FIO4DIR = 0x00000000;
    
    FIO0SET = 0x00000000;
    FIO1SET = 0x00000000;
    FIO2SET = 0x00000000;
    FIO3SET = 0x00000000;
    FIO4SET = 0x00000000;                    

    FIO2DIR = 0x000000FF;
    FIO2MASK = 0xFFFFFF00;
    
    init_serial();
    putchar('o');
    while(1)
    {
    
        putchar(getchar());
      }
    
    
return 0;    
}

void init_serial (void)              /* Initialize Serial Interface       */
{                     
    PINSEL0 |= 0x40000000;       /* Enable TxD1                       */
    PINSEL1 |= 0x00000001;       /* Enable RxD1                       */
  
    PCLKSEL0  = 0x02 << 8;         //set UART clock to 30Mkz
  
    U1LCR     = 0x00000083;         /* 8 bits, no Parity, 1 Stop bit     */
    U1DLL     = 0x000000C3;         /* 9600 Baud Rate @ 30MHz VPB Clock  */
    U1DLM   = 0x00000000;
    U1LCR     = 0x00000003;        /* DLAB = 0                          */
}


unsigned char putchar (unsigned char ch)               /* Write character to Serial Port    */
{                          

  
  while (!(U1LSR & 0x20));
  return (U1THR = ch);
}


unsigned char getchar (void)                 /* Read character from Serial Port   */
{                    

  while (!(U1LSR & 0x01));

  return (U1RBR);
}
SII
А в частоте процессора уверены? Её ж тоже надо настраивать, ведь частоты периферии являются её производными. (и, ИМХО, лучше всё делать самому вообще без всяких библиотек -- дольше, зато надёжней, а заодно и разберёшься реально, что там к чему)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.