STM32_ExtendedLibs/MyLibsGeneral/Inc/__general_spi.h
Razvalyaev f61aa1ff0f init commit
сделаны базовые хедеры:
- mylibs_config
- mylibs_defs
- mylibs_include
- trace
- trackers
- bit_access

также сделан модуль general_gpio.c/.h

Но надо проверить переструктуризированные модули

Остальные модули  __general_XXX в целом готовы и как-то работают (на МЗКТЭ) но не структуризированы
2025-10-18 18:27:37 +03:00

101 lines
4.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
**************************************************************************
* @file general_spi.h
* @brief Заголовочны файл модуля инициализации SPI.
*************************************************************************/
#ifndef __SPI_GENERAL_H_
#define __SPI_GENERAL_H_
//////////////////////////////////////////////////////////////////////
/////////////////////////---USER SETTINGS---/////////////////////////
#define HAL_SPI_MODULE_ENABLED // need to uncomment these defines in stm32f4xx_hal_conf.h
// also need to add hal_spi.c (source code)
#define USE_SPI1
#define USE_SPI2
#define USE_SPI3
/////////////////////////---USER SETTINGS---/////////////////////////
#include "mylibs_defs.h"
/////////////////////////////////////////////////////////////////////
////////////////////////////---DEFINES---////////////////////////////
////////////////////////////---DEFINES---////////////////////////////
/////////////////////////////////////////////////////////////////////
///////////////////////---STRUCTURES & ENUMS---//////////////////////
typedef struct // struct with settings for custom function
{
SPI_HandleTypeDef hspi;
GPIO_TypeDef *CLK_GPIOx;
uint32_t CLK_PIN;
uint32_t CLK_GPIO_AlternageFunc;
GPIO_TypeDef *MISO_GPIOx;
uint32_t MISO_PIN;
uint32_t MISO_GPIO_AlternageFunc;
GPIO_TypeDef *MOSI_GPIOx;
uint32_t MOSI_PIN;
uint32_t MOSI_GPIO_AlternageFunc;
}SPI_SettingsTypeDef;
///////////////////////---STRUCTURES & ENUMS---//////////////////////
/////////////////////////////////////////////////////////////////////
///////////////////////////---FUNCTIONS---///////////////////////////
/**
* @brief Initialize SPI with SPI_SettingsTypeDef structure.
* @param sspi - указатель на структуру с настройками SPI.
* @return HAL status.
* @note Данная структура содержит хендл ЮАРТ и настройки перефирии (GPIO)
*/
HAL_StatusTypeDef SPI_Base_Init(SPI_SettingsTypeDef *sspi);
/**
* @brief Initialize GPIO for SPI.
* @param GPIOx - порт для настройки.
* @param GPIO_PIN_RX - пин для настройки на прием.
* @param GPIO_PIN_TX - пин для настройки на передачу.
*/
void SPI_GPIO_Init(SPI_SettingsTypeDef *sspi);
/**
* @brief Initialize DMA for SPI.
* @param hspi - указатель на хендл SPI для настройки DMA.
* @param hdma_rx - указатель на хендл DMA для линии приема SPI.
* @param DMAChannel - указатель на канал DMA/поток DMA в STM32F407.
* @param DMA_CHANNEL_X - канал DMA.
*/
void SPI_DMA_Init(SPI_HandleTypeDef *hspi, DMA_HandleTypeDef *hdma_rx, DMA_Stream_TypeDef *DMAChannel, uint32_t DMA_CHANNEL_X);
/**
* @brief Initialize SPI & DMA clock and interrupt.
* @param hspi - указатель на хендл SPI для инициализации.
* @note Чтобы не генерировать функцию с иницилизацией неиспользуемых SPI,
дефайнами определяются используемые SPI.
*/
void SPI_MspInit(SPI_HandleTypeDef *hspi);
/**
* @brief Deinitialize SPI & DMA clock and interrupt.
* @param hspi - указатель на хендл SPI для деинициализации.
* @note Чтобы не генерировать функцию с деиницилизацией неиспользуемых SPI,
дефайнами в rs_message.h определяются используемые SPI.
*/
void SPI_MspDeInit(SPI_HandleTypeDef *hspi);
/**
* @brief Check that spi init structure have correct values.
* @param sspi - указатель на структуру с настройками SPI.
* @return HAL status.
*/
HAL_StatusTypeDef Check_SPI_Init_Struct(SPI_SettingsTypeDef *sspi);
///////////////////////////---FUNCTIONS---///////////////////////////
#endif // __SPI_GENERAL_H_