Этот код под серией LPC22хх работает отлично, но когда меняешь в KEil, микроконтроллер на серию 23хх, меняешь инструкции и все регистры начинает выдавать ошибку Prefetch Abort: ARM Instruction at 0000000CH. Подскажите где в коде моя ошибка... #include <stdio.h> #include <LPC23xx.H> #define CR 0x0D #include <string.h> #define VREF 3
int putchar (int ch) { if (ch == '\n') { while (!(U1LSR & 0x20)); U1THR = ch; while (!(U1LSR & 0x20)); return (U1THR = ch); }
int getchar (void) {
while (!(U1LSR & 0x01));
return (U1RBR); }
int main (void) {
unsigned int v ;
VPBDIV= 0x02; - вот эту строчку надо изменить, PCLKSEL0=... дальше не знаю...Это первый вопрос. IODIR1= 0x00ff0000; AD0CR = 0x00200601;
PINSEL0 = 0x00050000; U1LCR = 0x83; U1DLL = 97; U1LCR = 0x03;
while(1){ AD0CR |= 0x01000000; while((AD0GDR & 0x80000000)==0); v = ((AD0GDR>>6)& 0x03ff);
printf ("Digital Value %4u = %01u.%04u Volts\r", (unsigned) v, (unsigned) (v * VREF) >> 10, (unsigned) ((v * VREF * 10000UL) >> 10UL) % 10000);
AD0CR= 0x00000000;; }
return(0);
} P.S. Странно но у меня не работает функция printf()на 23 серии, хотя настройка UART прописаны.Может так применяется уже немного другой синтаксис.Подскажите. Конкретно программирую для контроллера LPC2378.
|