mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-25 14:33:52 +01:00
cpu/stm32f4: optimized baudrate calculation
This commit is contained in:
parent
d71abdf980
commit
d17973a060
@ -97,8 +97,7 @@ int uart_init_blocking(uart_t uart, uint32_t baudrate)
|
||||
uint32_t tx_pin = 0;
|
||||
uint32_t rx_pin = 0;
|
||||
uint8_t af = 0;
|
||||
float clk = 0.0;
|
||||
float divider;
|
||||
uint32_t clk = 0;
|
||||
uint16_t mantissa;
|
||||
uint8_t fraction;
|
||||
|
||||
@ -167,9 +166,9 @@ int uart_init_blocking(uart_t uart, uint32_t baudrate)
|
||||
}
|
||||
|
||||
/* configure UART to mode 8N1 with given baudrate */
|
||||
divider = clk / (16 * baudrate);
|
||||
mantissa = (uint16_t)divider;
|
||||
fraction = (uint8_t)((divider - mantissa) * 16);
|
||||
clk /= baudrate;
|
||||
mantissa = (uint16_t)(clk / 16);
|
||||
fraction = (uint8_t)(clk - (mantissa * 16));
|
||||
dev->BRR = ((mantissa & 0x0fff) << 4) | (0x0f & fraction);
|
||||
|
||||
/* enable receive and transmit mode */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user