Белый Жрец (13.06.2013 12:52, просмотров: 2108)
Не ругайте сильно если было - макросы для работы с bit-band alias для STM...
#define bb_periph_bit(reg,bit) (*((u32 *)((((u32)(&(reg))-PERIPH_BASE)*0x20+bit*4)+PERIPH_BB_BASE)))
#define bb_sram_bit(var,bit) (*((u32 *)((((u32)(&(var))-SRAM_BASE)*0x20+bit*4)+SRAM_BB_BASE)))
inline void DB(u8 x){ // распределение по ногам
static u32 tmp;
tmp=(u32)x;
bb_periph_bit(GPIOE->ODR,2) =bb_sram_bit(tmp,0); // 0 бит
bb_periph_bit(GPIOE->ODR,3) =bb_sram_bit(tmp,1); // 1 бит
bb_periph_bit(GPIOD->ODR,7) =bb_sram_bit(tmp,2); // 2 бит
bb_periph_bit(GPIOD->ODR,6) =bb_sram_bit(tmp,3); // 3 бит
bb_periph_bit(GPIOD->ODR,5) =bb_sram_bit(tmp,4); // 4 бит
bb_periph_bit(GPIOD->ODR,4) =bb_sram_bit(tmp,5); // 5 бит
bb_periph_bit(GPIOD->ODR,3) =bb_sram_bit(tmp,6); // 6 бит
bb_periph_bit(GPIOD->ODR,10)=bb_sram_bit(tmp,7); // 7 бит
}