инициализация структуры spi перенесена в spi.begin, т.к. до этого функции-сеттеры зависали при попытке поработать с элементами этой структуры. Сами сеттеры тоже немного изменены

This commit is contained in:
klassents committed 2024-09-12 14:12:24 +07:00
1 parent 63e718e83f
commit 63217147e5
3 files changed
+46 -37

No files matched your search

@@ -253,8 +253,8 @@ void HAL_SPI_CS_Disable(SPI_HandleTypeDef *hspi);
HAL_StatusTypeDef HAL_SPI_Exchange(SPI_HandleTypeDef *hspi, uint8_t TransmitBytes[], uint8_t ReceiveBytes[], uint32_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_SPI_ExchangeThreshold(SPI_HandleTypeDef *hspi, uint8_t TransmitBytes[], uint8_t ReceiveBytes[], uint32_t DataSize, uint32_t Timeout);
HAL_StatusTypeDef HAL_SPI_Exchange_IT(SPI_HandleTypeDef *hspi, uint8_t TransmitBytes[], uint8_t ReceiveBytes[], uint32_t Size);
void HAL_SPI_Set_Clock_Divider(SPI_HandleTypeDef *hspi, uint8_t clockDiv);
void HAL_SPI_Set_Clock_Mode(SPI_HandleTypeDef *hspi, uint8_t CLKPhase, uint8_t CLKPolarity);
void HAL_SPI_Set_Clock_Divider(SPI_HandleTypeDef *hspi);
void HAL_SPI_Set_Clock_Mode(SPI_HandleTypeDef *hspi);
/**
* @brief Разрешить прерывания в соответствии с маской.
@@ -287,17 +287,14 @@ HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
*
* @param hspi указатель на структуру SPI_HandleTypeDef, которая содержит
* информацию о конфигурации для модуля SPI.
* @param clockDiv делитель частоты в пределах от SPI_BAUDRATE_DIV4 до SPI_BAUDRATE_DIV256
*/
void HAL_SPI_Set_Clock_Divider(SPI_HandleTypeDef *hspi, uint8_t clockDiv)
void HAL_SPI_Set_Clock_Divider(SPI_HandleTypeDef *hspi)
{
uint32_t config = hspi->Instance->CONFIG;
HAL_SPI_Disable(hspi);
hspi->Init.BaudRateDiv = clockDiv;
config &= ~(0b111 << SPI_CONFIG_BAUD_RATE_DIV_S); // очистить
config |= (hspi->Init.BaudRateDiv << SPI_CONFIG_BAUD_RATE_DIV_S); // установить новое
hspi->Instance->CONFIG = config; // сохранить конфигурацию
HAL_SPI_Enable(hspi);
}
/**
@@ -305,24 +302,15 @@ void HAL_SPI_Set_Clock_Divider(SPI_HandleTypeDef *hspi, uint8_t clockDiv)
*
* @param hspi указатель на структуру SPI_HandleTypeDef, которая содержит
* информацию о конфигурации для модуля SPI.
* @param CLKPhase фаза тактирующего сигнала:
* 1 - тактовая частота SPI неактивна вне слова,
* 0 - тактовая частота SPI активна вне слова
* @param CLKPolarity полярность тактирующего сигнала
* 1 - тактовый сигнал удерживается на высоком уровне,
* 0 - тактовый сигнал удерживается на низком уровне
*/
void HAL_SPI_Set_Clock_Mode(SPI_HandleTypeDef *hspi, uint8_t CLKPhase, uint8_t CLKPolarity)
void HAL_SPI_Set_Clock_Mode(SPI_HandleTypeDef *hspi)
{
uint32_t config = hspi->Instance->CONFIG;
HAL_SPI_Disable(hspi);
hspi->Init.CLKPhase = CLKPhase;
hspi->Init.CLKPolarity = CLKPolarity;
config &= ~((1 << SPI_CONFIG_CLK_PH_S) | (1 << SPI_CONFIG_CLK_POL_S)); // очистить
config |= ((hspi->Init.CLKPhase << SPI_CONFIG_CLK_PH_S) |
(hspi->Init.CLKPolarity << SPI_CONFIG_CLK_POL_S)); // установить новые значения
hspi->Instance->CONFIG = config; // сохранить конфигурацию
HAL_SPI_Enable(hspi);
}
/**