不含stm32 底层的代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyStm32Code/bsp/Inc/bsp_spi.h

95 lines
2.9 KiB

2 years ago
#ifndef __BSP_SPI_H
#define __BSP_SPI_H
#include "stm32f4xx_hal.h"
#include "main.h"
// #include "sys.h"
typedef enum
{
SPI_Trans_Polling = 0x00U,
SPI_Trans_IT = 0x01U,
SPI_Trans_DMA = 0x02U,
} SPI_Transmode_TypeDef;
typedef enum
{
SPI_WORKMODE_RX_TX = 0x00U,
SPI_WORKMODE_TX = 0x01U,
SPI_WORKMODE_RX = 0x02U,
} SPI_WORKMODE_RX_TX_TypeDef;
typedef void ( *enable_func_gpio) (void);
typedef int ( *callback_fun) (void *obj, void *buf, uint16_t size);
typedef struct
{
SPI_HandleTypeDef *hspi;
volatile SPI_WORKMODE_RX_TX_TypeDef rx_tx;
SPI_Transmode_TypeDef trans_mode; /* 0 :polling, 1: IT 2: DMA*/
SPI_Transmode_TypeDef rcv_mode; /* 0 :polling, 1: IT 2: DMA*/
// Record_Trans_Rcv_TypeDef *trans_record;
// Record_Trans_Rcv_TypeDef *rcv_record;
uint8_t *trans_buf;
uint16_t trans_size;
uint8_t *rcv_buf;
uint16_t rcv_size;
volatile uint8_t transferring;
uint32_t timebase;
// enable_func_gpio enable_trans_gpio;
// enable_func_gpio enable_trans_cplt_gpio;
void * obj;
callback_fun callback;
}SPI_HELPER_TypeDef;
extern SPI_HELPER_TypeDef *spihelper;
SPI_HELPER_TypeDef * SPI_HELPER_Init( );
void SPI_HELPER_Set_Huart(SPI_HELPER_TypeDef * spihelper, SPI_HELPER_TypeDef *hspi);
int SPI_HELPER_Setup_Trans_mode( SPI_HELPER_TypeDef * spihelper, uint8_t trans_mode );
int SPI_HELPER_Setup_Rcv_mode( SPI_HELPER_TypeDef * spihelper, uint8_t rcv_mode );
int SPI_HELPER_Set_Rcv_Buf( SPI_HELPER_TypeDef * spihelper, uint8_t * buf, uint16_t size);
int SPI_HELPER_Set_Trans_Buf( SPI_HELPER_TypeDef * spihelper, uint8_t * buf, uint16_t size);
int SPI_HELPER_Setup_WokMode_RX_TX( SPI_HELPER_TypeDef * spihelper, uint8_t rx_tx );
int SPI_HELPER_Set_Callback( SPI_HELPER_TypeDef * spihelper, void *obj, callback_fun func);
int SPI_HELPER_Trans(SPI_HELPER_TypeDef * spihelper, uint8_t *buf, uint16_t size);
int SPI_HELPER_Trans_TxCplt_Callback( SPI_HELPER_TypeDef * spihelper );
int SPI_HELPER_Start_Rcv(SPI_HELPER_TypeDef * spihelper, uint8_t *buf, uint16_t size);
int SPI_HELPER_RCV_Cplt_Callback( SPI_HELPER_TypeDef * spihelper );
int SPI_HELPER_Start_Trans_Rcv(SPI_HELPER_TypeDef * spihelper, uint8_t *txbuf ,uint8_t *rxbuf, uint16_t size);
int SPI_HELPER_Trans_RCV_Cplt_Callback( SPI_HELPER_TypeDef * spihelper );
void SPI_HELPER_Test(void) ;
void SPI_HELPER_TransmitReceive(uint8_t* txData, uint8_t* rxData, uint16_t size) ;
#endif
/*
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi);
*/