调试环境搭建

This commit is contained in:
冯佳
2026-01-23 10:13:38 +08:00
parent b166bee1a9
commit 5dce1bf382
6 changed files with 404 additions and 379 deletions

View File

@ -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;