Цитата(aaarrr @ Apr 9 2014, 12:28)

Сколько-то там - это сколько? И что получится, если разделить частоту ядра на эти мегагерцы?

Да я уже не помню сколько там миллионов... 320*240*25 = пикселей/сек . Реально работает не быстрее... около 8.33 кадров в секунду если включать цикл for, и около 10 кадров в секунду, если просто перебирать цвета по каждой точке.
Цитата(aaarrr @ Apr 9 2014, 12:28)

Листинг ассемблерный прежде всего посмотрите.
Код
554: while(1)
555: {
556:
0x0800142C E016 B 0x0800145C
557: for (max=0;max<76800;max++)
558: {
0x0800142E 2000 MOVS r0,#0x00
0x08001430 4911 LDR r1,[pc,#68]; @0x08001478
0x08001432 6008 STR r0,[r1,#0x00]
0x08001434 E008 B 0x08001448
559: *(uint16_t *) (LCD_DATA)=y;
560: }
0x08001436 4811 LDR r0,[pc,#68]; @0x0800147C
0x08001438 8800 LDRH r0,[r0,#0x00]
0x0800143A 4909 LDR r1,[pc,#36]; @0x08001460
0x0800143C 8008 STRH r0,[r1,#0x00]
0x0800143E 480E LDR r0,[pc,#56]; @0x08001478
0x08001440 6800 LDR r0,[r0,#0x00]
0x08001442 1C40 ADDS r0,r0,#1
0x08001444 490C LDR r1,[pc,#48]; @0x08001478
0x08001446 6008 STR r0,[r1,#0x00]
0x08001448 480B LDR r0,[pc,#44]; @0x08001478
0x0800144A 6800 LDR r0,[r0,#0x00]
0x0800144C F5B03F96 CMP r0,#0x12C00
0x08001450 DBF1 BLT 0x08001436
561: y++;
0x08001452 480A LDR r0,[pc,#40]; @0x0800147C
0x08001454 6800 LDR r0,[r0,#0x00]
0x08001456 1C40 ADDS r0,r0,#1
0x08001458 4908 LDR r1,[pc,#32]; @0x0800147C
0x0800145A 6008 STR r0,[r1,#0x00]
Далее идет отсыл по условию while(1)
Если работа по прерыванию, то добавляется еще несколько команд. Сброс флага - как минимум одна команда.
p.s. кварц на 8МГц, в stm32f10x.h раздевайнена строка для HD линии, и собственно выставлен кварц на 8МГц.
p.p.s как я понимаю, процессорное время тратится на выполнение этих команд. Но как же тогда люди добиваются 25 кадров в секунду, при этом проц работает на частоте 72МГц , и разрешенка у них не ниже моей? Или я чего-то упустил в форуме?