Кто любит RISC в жизни, заходим, не стесняемся.
Тема закрыта

CooCox STM32F303 быстрое чтение порта

Чт окт 24, 2019 18:04:38

Использую COOCOX,как можно организовать самое быстрое чтение порта за целое количество тактов?
Сейчас у меня так-
Код:
unsigned int x;
    x=0;
         Buffer[x++]=GPIOB->IDR ;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;//10
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;//20
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
   Buffer[x++]=GPIOB->IDR;
     ......

но появляется откуда то странная неравномерность в каждом отсчете по количеству тактов
Никаких таймеров и прерываний в программе не задействованы,тактовая 72 МГц

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 19:19:16

Конвейер захлебывается.

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 19:32:37

как можно организовать самое быстрое чтение порта за целое количество тактов?

Чтобы F3 читал за целое число тактов должно быть выставлено 0WS, для 72 MHz этого можно добиться выполняя код из CCM RAM, будет 2 такта если компилятор все скомпилит в LDR + STR. По нормальному нужно сразу на ассме и писать:
Код:
asm("LDRB R0, [R1]");
asm("STRB R0, [R2], #1");

Из флеша будет 2.5 такта и больше, в зависимости от величины WS.

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 19:35:25

Вот почитай https://radiokot.ru/forum/viewtopic.php?f=59&t=160643

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 20:57:45

240265, я это читал,толком не понятно как считать быстро-одни рассуждения )))

Добавлено after 51 minute 37 seconds:
Попробовал так
Код:
uint16_t arr[300];
const uint32_t idr = (uint32_t)&GPIOB->IDR;

      asm("PUSH {R0, R1, R2}");

      asm("MOV R2, %0" : : "r" (arr));//arr= http://docplayer.ru/54665016-Optimizacii-v-staticheskih-i-dinamicheskih-kompilyatorah-i-ih-primenenie-na-primere-gcc-llvm-javascriptdvizhkov.html
      asm("MOVW R1, %0" : : "n" (idr & 0xFFFF));
      asm("MOVT R1, %0" : : "n" (idr >> 16));

        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        asm("LDRB R0, [R1]");
        asm("STRB R0, [R2], #1");
        ......
        asm("POP {R0, R1, R2}");


Почему то буфер не заполняется данными с порта B

Добавлено after 9 minutes 15 seconds:
Стоп!arr это адрес буфера а не переменная?

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 21:00:46

Стоп!arr это адрес буфера а не переменная?

Все там правильно, единственное если используешь LDRB/STRB, то массив должен быть uint8_t. Или пиши LDRH...

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 21:32:16

В майне обьявляю volatile uint8_t buffer[1024];
.
.
Затем вызываю ReadADC((uint32_t)&buffer[0], Band );

Добавлено after 56 seconds:
Но это в Кейле.
Вложения
ReadADC.c
(60.16 KiB) Скачиваний: 433

Re: COOCOX STM32F303 быстрое чтение порта

Чт окт 24, 2019 22:08:08

У меня ошибки...
СпойлерC:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:48:2: error: unknown type name 'LDRB'
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:48:12: error: expected identifier or '(' before '[' token
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:48:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:49:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:50:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:51:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:52:13: error: stray '#' in program
[cc] ^
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:54:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:53:29: error: stray '#' in program
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:55:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:56:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:57:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:58:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:59:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:60:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:61:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:62:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:63:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:64:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:65:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:66:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:67:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:68:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:69:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:70:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:71:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:72:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:73:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:74:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:75:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:76:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:77:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:78:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:79:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:82:13: error: stray '#' in program
[cc] ^
[cc] LDRB rez,[#0x48000411]
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:83:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:84:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:85:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:86:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:87:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:88:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:89:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:90:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:91:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:92:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:93:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:94:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:95:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:96:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:97:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:98:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:99:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:100:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:101:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:102:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:103:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:104:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:105:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:106:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:107:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] STRB rez,[addressbuffer], #1
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:109:29: error: stray '#' in program
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:108:13: error: stray '#' in program
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:110:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:112:13: error: stray '#' in program
[cc] ^
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] STRB rez,[addressbuffer], #1
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:111:29: error: stray '#' in program
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:113:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:116:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:117:29: error: stray '#' in program
[cc] ^
[cc] STRB rez,[addressbuffer], #1
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:118:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:119:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:120:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:121:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] LDRB rez,[#0x48000411]
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:122:13: error: stray '#' in program
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:123:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:124:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:125:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:126:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:127:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:128:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:129:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:130:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:131:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:132:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:134:13: error: stray '#' in program
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:133:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] LDRB rez,[#0x48000411]
[cc] ^
......\OSC F303 LS020 021\main.c:1297:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1298:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1299:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1300:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1301:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1302:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1303:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1306:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1307:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1308:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1309:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1310:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1311:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1312:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1313:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1314:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1315:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1316:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1317:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1318:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1319:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1320:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1321:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1322:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1323:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1324:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1325:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1326:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1327:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1328:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1329:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1330:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1331:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1332:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1333:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1334:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1335:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1336:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1337:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1340:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1341:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1342:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1343:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1344:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1345:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1346:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1347:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1348:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1349:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1350:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1351:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1352:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1353:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1354:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1355:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1356:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1357:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1358:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1359:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1360:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1361:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1362:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1363:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1364:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1365:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1366:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1367:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1368:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1369:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1370:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1371:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1374:13: error: stray '#' in program
[cc] LDRB rez,[#0x48000411]
[cc] ^
[cc] C:\CooCox\CoIDE\workspace\OSC F303 LS020 021\main.c:1375:29: error: stray '#' in program
[cc] STRB rez,[addressbuffer], #1


Добавлено after 17 minutes 27 seconds:
исходник пока такой
Вложения
main.c
(19.56 KiB) Скачиваний: 561

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 08:24:13

У меня ошибки...
исходник пока такой
Столько ошибок в элементарном коде.... :shock: Надо всё-таки мануалы читать перед тем как что-то писать. Если конечно не чукча... :)))
asm("PUSH {R0, R1, R2}");
Это зачем? В чём смысл? Читайте раздел про Calling conventions для своего компилятора.
asm("MOV R2, %0" : : "r" (arr));
Разве arr у вас внутри функции - в регистре?
asm("MOV R2, %0" : : "r" (arr));//arr= http://docplayer.ru/54665016-Optimizaci ... zhkov.html
asm("MOVW R1, %0" : : "n" (idr & 0xFFFF));
asm("LDRH R0, [R1]");
Зачем распилили один asm-оператор на множество отдельных??? Чтобы себе в ногу выстрелить? Вы разве не понимаете, что всё это внутри си-функции и компилятор вправе вставить между двумя вашими соседними asm-операторами другие команды, которые попортят содержимое R0,R1?
Сам синтаксис asm-оператора сделан так, чтобы в него включить весь код, на входе - загрузив все нужные регистры из переменных, на выходе - выгрузив в переменные. А между двумя соседними асм-операторами сохранность регистров не гарантируется.
И вообще - зачем использовать явно-указанные регистры R0,R1,R2? Синтаксис asm-оператора позволяет этого не делать избегая таким образом конфликтов с окружающим си-кодом.
И что такое "(idr & 0xFFFF)"? Зачем? :shock:
asm("STRH R0, [R2], #1");
Если у Вас массив типа u16, то почему шаг между соседними его элементами делаете 1 байт? Читайте описание системы команд Cortex-M.
И почему нет указания компилятору что данные асм-операторы обращаются к памяти? Читайте описание синтаксиса оператора asm!

PS: Да и вообще - такой код лучше в отдельном асм-файле писать.

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 12:19:10

Это зачем? В чём смысл? Читайте раздел про Calling conventions для своего компилятора.

Novice user взял мой пример кода из старой темы, Calling conventions тут не при чем, регистры нужно сохранять потому что компилятор не отслеживает какие из них меняются в случае использования инлайн ассемблера.

asm("MOV R2, %0" : : "r" (arr));

Разве arr у вас внутри функции - в регистре?

Arr не обязана быть в регистре, "r" указывает на то, что вместо %0 должен быть подставлен регистр. Конкретно этот код скомпилируется в :
Код:
ldr r3, [pc, #764]
mov r2, r3


Зачем распилили один asm-оператор на множество отдельных??? Чтобы себе в ногу выстрелить? Вы разве не понимаете, что всё это внутри си-функции и компилятор вправе вставить между двумя вашими соседними asm-операторами другие команды, которые попортят содержимое R0,R1?
Сам синтаксис asm-оператора сделан так, чтобы в него включить весь код, на входе - загрузив все нужные регистры из переменных, на выходе - выгрузив в переменные. А между двумя соседними асм-операторами сохранность регистров не гарантируется.

Согласен, надежнее сделать все в виде одного asm оператора, хотя если у него нет выходных операндов, то все asm() неявно являются volatile и не оптимизируются.

И вообще - зачем использовать явно-указанные регистры R0,R1,R2? Синтаксис asm-оператора позволяет этого не делать избегая таким образом конфликтов с окружающим си-кодом.

Обычно такой код используют во всяких осциллах, там важны тайминги и если вместо регистров подставлять что-то другое, то может получится как с загрузкой arr, когда была вставлена дополнительная инструкция, а добавить PUSH/POP вроде как не проблема.

И что такое "(idr & 0xFFFF)"? Зачем? :shock:

В половину регистра 32-х битное значение не запихнешь, да компилятор это и не позволит, если оставить просто idr, то получим ошибку: immediate value out of range.

Если у Вас массив типа u16, то почему шаг между соседними его элементами делаете 1 байт? Читайте описание системы команд Cortex-M.
И почему нет указания компилятору что данные асм-операторы обращаются к памяти? Читайте описание синтаксиса оператора asm!

Да, должно быть
Код:
STRH R0, [R2], #2


В итоге сейчас бы я написал, наверно, так:
Спойлер
Код:
asm(
   "PUSH {R0, R1, R2}\n"
   "MOV R2, %0\n"
   "MOVW R1, %1\n"
   "MOVT R1, %2\n"

   "LDRH R0, [R1]\n"
   "STRH R0, [R2], #2\n"
   .....

   "POP {R0, R1, R2}"
   : : "r" (arr), "g" (idr & 0xFFFF), "g" (idr >> 16)
);

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 15:26:20

Novice user взял мой пример кода из старой темы, Calling conventions тут не при чем, регистры нужно
сохранять потому что компилятор не отслеживает какие из них меняются в случае использования инлайн ассемблера.

Не отслеживает он потому, что написано через одно место. Не надо внутри asm() использовать явно заданные регистры. И тогда компилятор всё нормально отследит.
Ну по крайней мере в IAR так.

Согласен, надежнее сделать все в виде одного asm оператора, хотя если у него нет выходных операндов, то все asm() неявно являются volatile и не оптимизируются.
Оптимизация тут не при чём. Причину Вы сам привели выше. Когда в предыдущем asm() не указали явно как грузить адрес arr и компилятор сделал это через доп. регистр. Повезло что R3 до этого не был использован в предыдущих asm(). Иначе - попортил бы его, возможно.

Обычно такой код используют во всяких осциллах, там важны тайминги и если вместо регистров подставлять что-то другое, то может получится как с загрузкой arr, когда была вставлена дополнительная инструкция, а добавить PUSH/POP вроде как не проблема.

Так я же говорю не про подстановку "чего-то другого", а про подстановку тех же регистров, но без явного указания номера регистра. Чтобы компилятор сам его выбирал, не конфликтуя с окружающим си-кодом.

В половину регистра 32-х битное значение не запихнешь, да компилятор это и не позволит, если оставить просто idr, то получим ошибку: immediate value out of range.
Ничего не понял. :shock: Причём тут половина регистра?? В idr вроде как - адрес порта GPIO. Что делает "asm("MOVW R1, %0" : : "n" (idr & 0xFFFF));"?
Берёт от адреса младшие 16 бит и потом с получившегося адреса пытается читать? И что будет? :dont_know:

Добавлено after 7 minutes 7 seconds:
В итоге сейчас бы я написал, наверно, так:
Явные регистры лучше не использовать. Тем более что все возможности для этого есть.
А также не указано, что внутри этого asm() есть обращение к памяти. А это очень важно при использовании оптимизации.
Вот пример как я делаю:
Код:
inline u32 AtomicAnd(u32 volatile *ptr, u32 arg)
{
  u32 r, i;
  asm(
    "p01: LDREX    %0, [%2]    \n"
    "     ANDS     %1, %0, %3  \n"
    "     STREX    %1, %1, [%2]\n"
    "     CMP      %1, #0      \n"
    "     BNE      p01           "
    : "=&r"(r), "=&r"(i)
    : "r"(ptr), "r"(arg)
    : "cc", "memory");
  i = i;
  return r;
}

Как видно - нет никаких завязок на явные регистры. Также прописано "cc", "memory".

Re: CooCox STM32F303 быстрое чтение порта

Пт окт 25, 2019 15:54:01

Код:
volatile uint16_t buf[1024];

template<unsigned N>
void inline Foo(volatile uint16_t *p) __attribute__((always_inline))
{
  if constexpr (N)
  {
    *p++=*(volatile uint16_t *)&GPIOB->IDR;
    Foo<N-1>(p);
  }
}

int main()
{
  Foo<50>(buf);
  Foo<100>(buf+50);
  Foo<100>(buf+150);
}

Оно? :)
Спойлер
Код:
//   23   Foo<50>(buf);
        LDR.W    R2,??DataTable1  ;; 0x48000410
        LDR.W    R1,??DataTable1_1
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+0]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+2]
        LDRH     R4,[R2, #+0]
        STRH     R4,[R1, #+4]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+6]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+8]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+10]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+12]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+14]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+16]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+18]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+20]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+22]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+24]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+26]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+28]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+30]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+32]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+34]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+36]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+38]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+40]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+42]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+44]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+46]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+48]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+50]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+52]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+54]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+56]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+58]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+60]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+62]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+64]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+66]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+68]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+70]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+72]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+74]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+76]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+78]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+80]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+82]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+84]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+86]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+88]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+90]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+92]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+94]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+96]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+98]
//   24   Foo<100>(buf+50);
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+100]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+102]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+104]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+106]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+108]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+110]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+112]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+114]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+116]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+118]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+120]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+122]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+124]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+126]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+128]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+130]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+132]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+134]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+136]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+138]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+140]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+142]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+144]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+146]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+148]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+150]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+152]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+154]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+156]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+158]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+160]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+162]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+164]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+166]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+168]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+170]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+172]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+174]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+176]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+178]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+180]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+182]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+184]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+186]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+188]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+190]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+192]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+194]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+196]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+198]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+200]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+202]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+204]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+206]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+208]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+210]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+212]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+214]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+216]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+218]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+220]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+222]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+224]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+226]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+228]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+230]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+232]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+234]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+236]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+238]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+240]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+242]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+244]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+246]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+248]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+250]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+252]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+254]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+256]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+258]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+260]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+262]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+264]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+266]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+268]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+270]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+272]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+274]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+276]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+278]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+280]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+282]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+284]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+286]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+288]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+290]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+292]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+294]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+296]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+298]
//   25   Foo<100>(buf+150);
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+300]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+302]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+304]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+306]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+308]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+310]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+312]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+314]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+316]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+318]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+320]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+322]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+324]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+326]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+328]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+330]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+332]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+334]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+336]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+338]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+340]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+342]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+344]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+346]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+348]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+350]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+352]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+354]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+356]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+358]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+360]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+362]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+364]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+366]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+368]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+370]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+372]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+374]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+376]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+378]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+380]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+382]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+384]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+386]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+388]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+390]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+392]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+394]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+396]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+398]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+400]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+402]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+404]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+406]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+408]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+410]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+412]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+414]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+416]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+418]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+420]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+422]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+424]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+426]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+428]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+430]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+432]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+434]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+436]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+438]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+440]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+442]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+444]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+446]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+448]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+450]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+452]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+454]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+456]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+458]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+460]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+462]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+464]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+466]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+468]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+470]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+472]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+474]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+476]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+478]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+480]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+482]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+484]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+486]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+488]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+490]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+492]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+494]
        LDRH     R3,[R2, #+0]
        STRH     R3,[R1, #+496]
        LDRH     R0,[R2, #+0]
        STRH     R0,[R1, #+498]

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:02:20

У меня ошибки...
исходник пока такой
Столько ошибок в элементарном коде.... :shock: Надо всё-таки мануалы читать перед тем как что-то писать. Если конечно не чукча... :)))


PS: Да и вообще - такой код лучше в отдельном асм-файле писать.

я смотрю вы ас в обвинениях,и по вашему чукча-не человек?
я понятия не имею как встроить asm в coocox,мне написали-

я оттуда и взял код
прошу воздержаться от ответов в этой теме-толку от вас нет,уважаемый ЧЕЛОВЕК!!!или дайте конкретный ответ по теме,если на что-то способны кроме как обозвать обезъяной или что вы там имеете ввиду

Добавлено after 14 minutes 6 seconds:
Re: CooCox STM32F303 быстрое чтение порта
Прошу администраторов закрыть тему
Буду прорываться сам,всех благодарю за участие (и ЧЕЛОВЕКУ jcxz в особенности)

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:08:31

я оттуда и взял код
прошу воздержаться от ответов в этой теме-толку от вас нет,уважаемый ЧЕЛОВЕК!!!или дайте конкретный ответ по теме,если на что-то способны кроме как обозвать обезъяной или что вы там имеете ввиду

Странно... вроде помогал, писал, пояснял... :dont_know: В ответ - какие-то обиды, да ещё 4 минуса влепили. Причём по всему форуму похоже прошли чтобы найти мои сообщения. И не лень было хе$#@й заниматься? Может лучше стоило это время потратить на хотя бы минимальное изучения вопроса и поднятия своего уровня компетенции с уровня плинтуса?
Или у вас критические дни??
Все остальные поняли мои посты, но до вас похоже так и не дошло. После таких "благодарностей" и желания никакого нет помогать таким как вы - бродите и дальше в своих 3-х соснах...
адье!

Re: CooCox STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:14:56

и чем вы помогли? обозвали обезъяной? ваш срач после той строки даже читать не стал
насчет минусов-вы заслужили,если вы себя считаете ЧЕЛОВЕКОМ,а всех остальных обезъянами или кем там,плюса вы точно не заслужили

Добавлено after 1 minute 57 seconds:
буду лепить FIFO буфер,с такими ЧЕЛОВЕКАМИ как jcxz далеко не уедешь

Re: CooCox STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:18:32

и чем вы помогли? обозвали обезъяной? ваш срач после той строки даже читать не стал
насчет минусов-вы заслужили,если вы себя считаете ЧЕЛОВЕКОМ,а всех остальных обезъянами или кем там,плюса вы точно не заслужили

"уважаемый" у вас с головой всё в порядке?? Где я вас или кого-то ещё обезьяной назвал? Или ещё как-то обзывал?
А то что вы изволили назвать "срачем" - была попытка помочь вам же. Если у вас не хватает ума осмыслить советы - я тут не виноват. Да, грешен, больше помогать не буду пытаться.

PS: Похоже точно - критические дни.... :dont_know:

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:21:07

jcxz, то рабочий код, он работал когда я его показывал в другой теме и сегодня я тоже его проверял. Соответственно никакой MOVW ничего там не читает из 16-ти битного адреса, MOVW и MOVT работают с 16-ти битными константами, константа туда и передается(после компиляции будет: movw r1, #1040). Просто там все делается явно, но конечно можно дать компилятору распределять регистры самостоятельно, это должно быть проще и пару байт он на этом должен сэкономить :)

Re: CooCox STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:23:53

то есть обозвать обезъяной или кем там-помощь? странная у вас помощь,Бог вам судья,уважаемый ЧЕЛОВЕК!!
тема закрыта!

Re: COOCOX STM32F303 быстрое чтение порта

Пт окт 25, 2019 17:25:04

jcxz, то рабочий код, он работал когда я его показывал в другой теме и сегодня я тоже его проверял. Соответственно никакой MOVW ничего там не читает из 16-ти битного адреса, MOVW и MOVT работают с 16-ти битными константами, константа туда и передается

Читает не MOVW, а LDR после него. В том недоразумении, которое трудно назвать кодом, выложенном этим несчастным обиженным человеком.
Вы откройте тот файл, что он сюда постил - увидите. Я говорил про тот код.

Про Ваш код я ничего не говорил, у Вас с адресом всё нормально.
Тема закрыта