Ко многим ресурсам STM32 можно обратиться как к слову (32бит), полуслову (16бит) и как к байту (8бит). Например, так:
#define GPIOB_Low (*(__IO uint8_t *)((uint32_t)&(GPIOB->ODR)))
#define GPIOB_High (*(__IO uint8_t *)((uint32_t)&(GPIOB->ODR) + 1))
#define GPIOB_Low (*(__IO uint8_t *)((uint32_t)&(GPIOB->ODR)))
#define GPIOB_High (*(__IO uint8_t *)((uint32_t)&(GPIOB->ODR) + 1))
что позволяет получить доступ к младшему байту порта, не затрагивая старший, и наоборот. Доступно как для чтения, так и для записи. На стандартных методах обращения к порту это никак не отражается.
Например запись
#define LCD_DATA (*(__IO uint8_t *)((uint32_t)&(GPIOB->ODR)))
LCD_DATA = 0xA5;
позволяет очень просто оперировать шиной LCD 8бит, подключённой к PB0-PB7..
Комментариев нет:
Отправить комментарий