ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
16 июня
59362 Топик полностью
Vit2005 (24.05.2006 14:50, просмотров: 1) ответил КонстантинТ на Как вариант
Обнаружил интересные вещи и неожиданные int nonLibUart0Putch(int ch) { while (!(U0LSR & ULSR_THRE)) // wait for TX buffer to empty continue; // also either WDOG() or swap() U0THR = (uint8_t)ch; // put char to Transmit Holding Register return (uint8_t)ch; // return char ("stdio-compatible"?) } int main (void) { Initialize(); IODIR0|=(1UL<<10); for(;;) { nonLibUart0Putch('+'); //uart0Putch('+'); IOCLR0|=(1UL<<10); delayUs(TEST_DELAY); IOSET0|=1UL<<10; } return 0; } Имеются 2 одинаковые функции ( nonLibUart0Putch и uart0Putch). С исходники 100% совпадают. uart0Putch находится в библиотеке, которую я и создал. Ширина импульса зависит от того откуда вызывается фунция ( из библиотеки или нет): с nonLibUart0Putch генерится 278uS импульс на P0.10 с uart0Putch генерится 381uS импульс на P0.10 Как такое может быть ? Что-то с ARM/Thumb режимами? Обе функции компилировались с одинаковыми опциями компилятора {TOOLKITDIR}\bin\arm-elf-gcc.exe -mcpu=arm7tdmi -I./ -c -O3 -msoft-float -shared -Wformat=2 -g {SOURCEFILE} -o {OBJFILE} {TOOLKITDIR}\bin\arm-elf-gcc.exe -mcpu=arm7tdmi -I./ -c -O3 -msoft-float -shared -Wformat=2 -g {SOURCEFILE} -o {OBJFILE} Для создания библиотеки использовалась следующая строка arm-elf-ar rc libbipom.a Init.out uart.out printf.out iprintf.out critical.out Это строка линкера {TOOLKITDIR}\bin\arm-elf-ld.exe -v -T {TOOLKITDIR}\arm-elf\include\libbipom\cstartup\lpc2138.ld -nostartfiles -nostdlib -o {TMPFILE} {TOOLKITDIR}\arm-elf\include\libbipom\cstartup\boot.o {OBJFILES} -L {TOOLKITDIR}\arm-elf\include\libbipom -lbipom -L {TOOLKITDIR}\arm-elf\lib -lc -L {TOOLKITDIR}\lib\gcc\arm-elf\4.0.0 -lgcc