ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
911991
evgeniy1294 (22.03.2019 10:03, просмотров: 5152)
В ядрах ARM есть такая фишка, как bitbanding: биты первого мегабайта SRAM, а также 1-го мегабайта памяти для каждого периферийного блока адресуются в виртуальные 32 мбайта адресного пространства. Пример для STM32: uint32_t offset = (uint32_t)&GPIOD->ODR - 0x40000000; uint32_t bit = 12; uint32_t* addr = (uint32_t*)(0x42000000+(offset*32)+(bit*4)); Этот код позволяет читать и изменять 12 бит регистра GPIOD->ODR. Это быстрее, чем использование OR/AND операций, т.е. подходит для оптимизации критических частей кода