调试环境搭建
This commit is contained in:
@ -72,15 +72,37 @@ bool hal_stm32f4_spi_init(hal_spi_instance_t instance, const hal_spi_config_t *c
|
||||
|
||||
/* Calculate baud rate prescaler based on desired baud rate */
|
||||
uint32_t apb_clock = HAL_RCC_GetPCLK2Freq(); /* Assume SPI1 is on APB2 */
|
||||
uint32_t prescaler = 0;
|
||||
|
||||
/* Define prescaler enum values */
|
||||
const uint32_t prescaler_enums[] = {
|
||||
SPI_BAUDRATEPRESCALER_2,
|
||||
SPI_BAUDRATEPRESCALER_4,
|
||||
SPI_BAUDRATEPRESCALER_8,
|
||||
SPI_BAUDRATEPRESCALER_16,
|
||||
SPI_BAUDRATEPRESCALER_32,
|
||||
SPI_BAUDRATEPRESCALER_64,
|
||||
SPI_BAUDRATEPRESCALER_128,
|
||||
SPI_BAUDRATEPRESCALER_256
|
||||
};
|
||||
|
||||
uint32_t prescaler_index = 0;
|
||||
uint32_t temp_prescaler = 2;
|
||||
|
||||
while (apb_clock / temp_prescaler > config->baudrate) {
|
||||
/* Find the appropriate prescaler */
|
||||
while (prescaler_index < sizeof(prescaler_enums)/sizeof(prescaler_enums[0])) {
|
||||
if (apb_clock / temp_prescaler <= config->baudrate) {
|
||||
break;
|
||||
}
|
||||
temp_prescaler <<= 1;
|
||||
prescaler++;
|
||||
prescaler_index++;
|
||||
}
|
||||
|
||||
hspi->Init.BaudRatePrescaler = (uint32_t)temp_prescaler;
|
||||
/* Use the found prescaler or the maximum available */
|
||||
if (prescaler_index >= sizeof(prescaler_enums)/sizeof(prescaler_enums[0])) {
|
||||
prescaler_index = sizeof(prescaler_enums)/sizeof(prescaler_enums[0]) - 1;
|
||||
}
|
||||
|
||||
hspi->Init.BaudRatePrescaler = prescaler_enums[prescaler_index];
|
||||
hspi->Init.FirstBit = SPI_FIRSTBIT_MSB; /* Default to MSB first */
|
||||
hspi->Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||
|
||||
Reference in New Issue
Block a user