У меня при обращении к памяти (чтение, запись) нужно передавать адрес. Адрес состоит из нескольких составляющих (на картинке).Изначально была такая конструкция
Код
typedef struct {
uint32_t page_add : 6;
uint32_t block_add : 11;
uint32_t reserved : 15;
}g_row_address;
typedef union{
uint32_t all;
g_row_address bits;
}g_flashrow_address;
Может так и проще работать но я как то сравнивал листинги и такой код компилирует в два раза больше инструкций чем mask&shift.Я подумал сделать по простому
Код
#define ROW_ADDRESS(BLOCK_ADDR,PAGE_ADDR) (BLOCK_ADDR|(PAGE_ADDR<<6))
но адрес 17-битный. то есть возникает тот же гемор сдвигать влево а потом вправо. или я что то упускаю?
Сообщение отредактировал Jenya7 - Jun 18 2018, 10:04
Эскизы прикрепленных изображений