16+
Воскресенье
18 августа
Вход |Карта сайта |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
Новая темаПравила РегистрацияСтатистика Архив
Вернуться в конференциюТопик полностью
maleon  (03.10.2018 08:54, просмотров: 1481)
STM32 Bit-Band, с портами работает нормально, а с переменными всё вычисляет ассемблером. Можно обяснить компилятору (Keil), что-бы адрес flags испльзовал на этапе компиляции? Может какой другой компилятор работает оптимальнее? 
Макрос:
#define  BBB(var, bit)	(*(u32*)((bit) << 2 | 0x2000000U | \
				 (uc32)&(var) & 0xFFF00000U | \
				((uc32)&(var) & 0xFFFFFU) << 5))
код:
			static	u32	flags;
			BBB(GPIOA->ODR, 5) ^= 1;
			BBB(flags, 15) ^= 1;
результат:
    43:                         BBB(GPIOA->ODR, 5) ^= 1; 
0x08000422 481E      LDR      r0,[pc,#120]  ; @0x0800049C
0x08000424 6800      LDR      r0,[r0,#0x00]
0x08000426 F0800001  EOR      r0,r0,#0x01
0x0800042A 491D      LDR      r1,[pc,#116]  ; @0x080004A0
0x0800042C F8C10194  STR      r0,[r1,#0x194]
    44:                         BBB(flags, 15) ^= 1; 
0x08000430 481C      LDR      r0,[pc,#112]  ; @0x080004A4
0x08000432 F36F0013  BFC      r0,#0,#20
0x08000436 491C      LDR      r1,[pc,#112]  ; @0x080004A8
0x08000438 4308      ORRS     r0,r0,r1
0x0800043A 491A      LDR      r1,[pc,#104]  ; @0x080004A4
0x0800043C F3C10113  UBFX     r1,r1,#0,#20
0x08000440 EA401041  ORR      r0,r0,r1,LSL #5
0x08000444 6800      LDR      r0,[r0,#0x00]
0x08000446 F0800101  EOR      r1,r0,#0x01
0x0800044A 4816      LDR      r0,[pc,#88]  ; @0x080004A4
0x0800044C F36F0013  BFC      r0,#0,#20
0x08000450 4B15      LDR      r3,[pc,#84]  ; @0x080004A8
0x08000452 4318      ORRS     r0,r0,r3
0x08000454 4B13      LDR      r3,[pc,#76]  ; @0x080004A4
0x08000456 F3C30313  UBFX     r3,r3,#0,#20
0x0800045A EA401043  ORR      r0,r0,r3,LSL #5
0x0800045E 6001      STR      r1,[r0,#0x00]
</c>
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXIX