ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
7 июля
225941 Топик полностью
ReAl (06.12.2010 19:28, просмотров: 94) ответил Vallav на Замечательно!
Я не пониаю, о чём речь. Если о глянуть осциллографом предел ногодрыга, «такой простой цикл» в терминологии моего первого сообщения в этой теме (и больше ни о чём я там не говорил), то это одно. Несколько On/Off подряд и большинство компиляоров сделают всё нормально. Если «есть места (можно найти места), которые иначе, чем на асме, не выписать как надо», то это совсем другое. Так пойдёт? __attribute__((__noinline__)) void pb1_toggle(unsigned n) { do { for( int i = 0; i < 5; ++i ) { PB1.On(); PB1.Off(); } } while(--n); } 480 .global _Z10pb1_togglej 481 .thumb 482 .thumb_func 484 _Z10pb1_togglej: 485 .LFB144: 105:./src/main.cpp **** { 486 .loc 1 105 0 487 .cfi_startproc 488 @ args = 0, pretend = 0, frame = 0 489 @ frame_needed = 0, uses_anonymous_args = 0 490 @ link register save eliminated. 491 .LVL13: 492 .LBB378: 493 .LBB379: 494 .LBB380: 495 .LBB383: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 496 .loc 2 121 0 497 0000 4FF44063 mov r3, #3072 498 0004 C4F20103 movt r3, 16385 499 0008 0222 movs r2, #2 500 .LVL14: 501 .L23: 502 .LBE383: 503 .LBE380: 504 .LBE379: 106:./src/main.cpp **** do { 505 .loc 1 106 0 506 000a 10F1FF30 adds r0, r0, #-1 507 .LVL15: 508 .LBB402: 509 .LBB387: 510 .LBB384: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 511 .loc 2 121 0 512 000e 1A61 str r2, [r3, #16] 513 .LBE384: 514 .LBE387: 515 .LBB388: 516 .LBB391: 129:./src/pin.h **** activestate == 'L' ? GPIOx->BSRR = mask : GPIOx->BRR = mask; 517 .loc 2 129 0 518 0010 5A61 str r2, [r3, #20] 519 .LVL16: 520 .LBE391: 521 .LBE388: 522 .LBB394: 523 .LBB382: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 524 .loc 2 121 0 525 0012 1A61 str r2, [r3, #16] 526 .LBE382: 527 .LBE394: 528 .LBB395: 529 .LBB390: 129:./src/pin.h **** activestate == 'L' ? GPIOx->BSRR = mask : GPIOx->BRR = mask; 530 .loc 2 129 0 531 0014 5A61 str r2, [r3, #20] 532 .LVL17: 533 .LBE390: 534 .LBE395: 535 .LBB396: 536 .LBB385: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 537 .loc 2 121 0 538 0016 1A61 str r2, [r3, #16] 539 .LBE385: 540 .LBE396: 541 .LBB397: 542 .LBB392: 129:./src/pin.h **** activestate == 'L' ? GPIOx->BSRR = mask : GPIOx->BRR = mask; 543 .loc 2 129 0 544 0018 5A61 str r2, [r3, #20] 545 .LVL18: 546 .LBE392: 547 .LBE397: 548 .LBB398: 549 .LBB381: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 550 .loc 2 121 0 551 001a 1A61 str r2, [r3, #16] 552 .LBE381: 553 .LBE398: 554 .LBB399: 555 .LBB389: 129:./src/pin.h **** activestate == 'L' ? GPIOx->BSRR = mask : GPIOx->BRR = mask; 556 .loc 2 129 0 557 001c 5A61 str r2, [r3, #20] 558 .LVL19: 559 .LBE389: 560 .LBE399: 561 .LBB400: 562 .LBB386: 121:./src/pin.h **** activestate == 'L' ? GPIOx->BRR = mask : GPIOx->BSRR = mask; 563 .loc 2 121 0 564 001e 1A61 str r2, [r3, #16] 565 .LBE386: 566 .LBE400: 567 .LBB401: 568 .LBB393: 129:./src/pin.h **** activestate == 'L' ? GPIOx->BSRR = mask : GPIOx->BRR = mask; 569 .loc 2 129 0 570 0020 5A61 str r2, [r3, #20] 571 .LVL20: 572 .LBE393: 573 .LBE401: 574 .LBE402: 106:./src/main.cpp **** do { 575 .loc 1 106 0 576 0022 F2D1 bne .L23 577 .LBE378: 112:./src/main.cpp **** } 578 .loc 1 112 0 579 0024 7047 bx lr 580 .cfi_endproc