Fix ffs usage in divisor calculation
This commit is contained in:
parent
fd5fd5e942
commit
6d7553df96
|
@ -242,13 +242,12 @@ bool spiTransfer(SPI_TypeDef *instance, uint8_t *out, const uint8_t *in, int len
|
|||
void spiSetDivisor(SPI_TypeDef *instance, uint16_t divisor)
|
||||
{
|
||||
#define BR_CLEAR_MASK 0xFFC7
|
||||
|
||||
uint16_t tempRegister;
|
||||
|
||||
SPI_Cmd(instance, DISABLE);
|
||||
|
||||
tempRegister = (instance->CR1 & BR_CLEAR_MASK);
|
||||
instance->CR1 = (tempRegister | ((ffs(divisor) - 1) << 3));
|
||||
instance->CR1 = (tempRegister | ((ffs(divisor | 0x100) - 2) << 3));
|
||||
|
||||
SPI_Cmd(instance, ENABLE);
|
||||
}
|
||||
|
|
|
@ -265,10 +265,12 @@ void spiSetDivisor(SPI_TypeDef *instance, uint16_t divisor)
|
|||
}
|
||||
|
||||
spiDevice[device].hspi.Init.BaudRatePrescaler = (uint8_t []) {
|
||||
0, 0,
|
||||
SPI_BAUDRATEPRESCALER_2, SPI_BAUDRATEPRESCALER_4,
|
||||
SPI_BAUDRATEPRESCALER_8, SPI_BAUDRATEPRESCALER_16,
|
||||
SPI_BAUDRATEPRESCALER_32, SPI_BAUDRATEPRESCALER_64,
|
||||
SPI_BAUDRATEPRESCALER_128, SPI_BAUDRATEPRESCALER_256}[ffs(divisor) - 1];
|
||||
SPI_BAUDRATEPRESCALER_128, SPI_BAUDRATEPRESCALER_256
|
||||
}[ffs(divisor | 0x100)];
|
||||
|
||||
if (HAL_SPI_Init(&spiDevice[device].hspi) == HAL_OK)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue