Код. Но, видимо, копать дальше буду понедельник. Пол часа до конца рабочего дня осталось. Плохо: проблема будет "сидеть в голове". Этот фрагмент даёт в максимуме под 34000 тактов.
{ __NOP(); t0 = DWT->CYCCNT; }
act_cnt = get_count(); // return(uint32_t);
if ( act_cnt != prv_cnt ) {
if (hdlc_snd_check_simple(256) != 0) { // free space found // "внешняя память"
modem_pkt_tx.sample[1] = modem_pkt_tx.sample[0]; // бэкапим предыдущий
if(act_cnt-1 != modem_pkt_tx.sample[1].pkt_num) PUTCHAR('$');
modem_pkt_tx.sample[0].exp_time = LocalTime; // millisec from start
modem_pkt_tx.sample[0].pkt_num = act_cnt; // IRQ number (every 500 usec ++ )
modem_pkt_tx.sample[0].chksum = do_chksum( &modem_pkt_tx.sample[0] ); // просто складываем 5 uint32_t
pin_on(LED_GRN); // макрос на битбанг
hdlc_snd_pkt_simple( &modem_pkt_tx.sample[0], sizeof(samples_t) ); // "внешняя память"
pin_off(LED_GRN); // макрос на битбанг
tx_count++;
} else {
printf("Send unreachable!\r\n"); // Авария, не здесь тормоза
}
}else{
}
prv_cnt = act_cnt;
{ __NOP(); t1 = DWT->CYCCNT; }
Может в командной строке чего напортачил, гляньте фрагмент Makefile?
FLAGS_C = -mthumb
FLAGS_C += -mcpu=cortex-m4
FLAGS_C += -mtune=cortex-m4
#FLAGS_C += -std=c99
FLAGS_C += -std=gnu99
FLAGS_C += -Wall
FLAGS_C += -O$(OPTIMIZATION)
#FLAGS_C += -gdwarf-2
FLAGS_C += -ggdb
FLAGS_C += -fno-builtin
FLAGS_C += $(INCLUDES) -I.
FLAGS_C += -DUSE_STDPERIPH_DRIVER
FLAGS_C += -DSERIAL_DEBUG
# FLAGS_C += -DUSE_LCD
FLAGS_C += -DGCC_ARMCM4
FLAGS_C += -DHSE_VALUE=8000000UL
#FLAGS_C += -DSTM32F4XX
FLAGS_C += -DSTM32F40_41xxx
FLAGS_C += -DVECT_TAB_FLASH -MD
FLAGS_C += -mfix-cortex-m3-ldrd
FLAGS_C += -c
FLAGS_C += -fmessage-length=0
FLAGS_C += -ffunction-sections
FLAGS_C += -fdata-sections
FLAGS_C += -msoft-float
FLAGS_C += -mapcs-frame
FLAGS_C += -D__thumb2__=1
FLAGS_C += -mno-sched-prolog
FLAGS_C += -fno-hosted
FLAGS_C += -fno-strict-aliasing
FLAGS_C += -ffast-math
FLAGS_C += -flto
# profiler use
#FLAGS_C += -fprofile-arcs -ftest-coverage
FLAGS_LD = -Lld-scripts -mcpu=cortex-m4 -mthumb
#FLAGS_LD = -Xlinker -Map=target/target.map
FLAGS_LD += -Wl,--gc-sections
#FLAGS_LD += -mcpu=cortex-m4
FLAGS_LD += -mthumb
#FLAGS_LD += -static
#FLAGS_LD += -nostdlib
#FLAGS_LD += -lnosys
#FLAGS_LD += -specs=nano.specs