Я установил 8-битную шину (PD0: PD7) на микроконтроллере stm32 для отправки адресов другому чипу (0: 255).Меня интересует, будет ли функция, подобная ниже, работать для быстрой смены адресов.Я не смог найти пример, показывающий, что регистр равен целому числу, поэтому я хочу подтвердить, что он будет работать.Мне нужна функция, которой я дам целочисленное значение для адреса (0: 255), и он установит 8 выводов шины с этим значением:
void chipbus(uint16_t bus8){
GPIOD->regs->BSRR = bus8; // set all the '1' in bus8 to high
GPIOD->regs->BRR = 255-bus8; // 255-bus8 inverts the 8 bits
// BRR to set the new '1' to low
}
Если это решение работает, яЛюбопытно также, если я переключу шину на порты PD5: PD12 будет работать моя функция как:
void chipbus(uint16_t bus8){
GPIOD->regs->BSRR = bus8*32; // set all '1' in bus8 to high
// multiply by 32 to shift 5 bits/pins
GPIOD->regs->BRR = (255-bus8)*32; // 255-bus8 inverts the 8 bits
// BRR to set the new '1' to low
}
Спасибо!