Czy może ktoś zobaczyć bardziej doświadczony. Czy taką funkcję można zoptymalizować by wykonywała się szybciej ?
Niestety nie mam możliwości modyfikowania wersji sprzętowej podłączenia.
Kod: Zaznacz cały
static void SPFD5408_write_byte(uint8_t byte)
{
if(byte & 1)GPIOA->BSRR = GPIO_BSRR_BS9; else GPIOA->BRR = GPIO_BRR_BR9;
if(byte & 2)GPIOC->BSRR = GPIO_BSRR_BS7; else GPIOC->BRR = GPIO_BRR_BR7;
if(byte & 4)GPIOA->BSRR = GPIO_BSRR_BS10; else GPIOA->BRR = GPIO_BRR_BR10;
if(byte & 8)GPIOB->BSRR = GPIO_BSRR_BS3; else GPIOB->BRR = GPIO_BRR_BR3;
if(byte & 16)GPIOB->BSRR = GPIO_BSRR_BS5; else GPIOB->BRR = GPIO_BRR_BR5;
if(byte & 32)GPIOB->BSRR = GPIO_BSRR_BS4 ; else GPIOB->BRR = GPIO_BRR_BR4;
if(byte & 64)GPIOB->BSRR = GPIO_BSRR_BS10; else GPIOB->BRR = GPIO_BRR_BR10;
if(byte & 128)GPIOA->BSRR = GPIO_BSRR_BS8; else GPIOA->BRR = GPIO_BRR_BR8;
SPFD5408_WR_STROBE;
}