ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
1042916 Топик полностью
VladislavS. (09.10.2020 09:19, просмотров: 501) ответил VLLV на Спасибо! Теперь смотрите, в чем проблема - такое приведение убивает признак volatile у DR! В IAR на максимальной оптимизации этот код не работает.
Блин, да не выдумывайте проблемы на ровном месте. Всё проще пареной репы. 
*(volatile uint8_t *)&SPI1->DR = 0;
        MOVS     R2,#+0
        LDR.N    R1,??__low_level_init_0+0x5C  ;; 0x4001300c
        STRB     R2,[R1, #+0]

*(volatile uint16_t *)&SPI1->DR = 0;
        MOVS     R2,#+0
        LDR.N    R1,??__low_level_init_0+0x5C  ;; 0x4001300c
        STRH     R2,[R1, #+0]

SPI1->DR = 0;
        MOVS     R2,#+0
        LDR.N    R1,??__low_level_init_0+0x5C  ;; 0x4001300c
        STR      R2,[R1, #+0]