added missing callbacks
This commit is contained in:
parent
411d720a41
commit
0d9c3eef4f
@ -49,8 +49,8 @@ void performHardwareInit() {
|
|||||||
|
|
||||||
BSP_Config();
|
BSP_Config();
|
||||||
}
|
}
|
||||||
void MX_USART3_UART_Init(uint32_t baudRate)
|
|
||||||
{
|
void MX_USART3_UART_Init(uint32_t baudRate) {
|
||||||
__HAL_RCC_USART3_CONFIG(RCC_USART3CLKSOURCE_HSI);
|
__HAL_RCC_USART3_CONFIG(RCC_USART3CLKSOURCE_HSI);
|
||||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
__HAL_RCC_USART3_CLK_ENABLE();
|
__HAL_RCC_USART3_CLK_ENABLE();
|
||||||
|
@ -150,7 +150,6 @@ void ETH_IRQHandler(void)
|
|||||||
HAL_ETH_IRQHandler(&EthHandle);
|
HAL_ETH_IRQHandler(&EthHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
DMA_HandleTypeDef* hdma_tx = NULL;
|
DMA_HandleTypeDef* hdma_tx = NULL;
|
||||||
DMA_HandleTypeDef* hdma_rx = NULL;
|
DMA_HandleTypeDef* hdma_rx = NULL;
|
||||||
|
SPI_HandleTypeDef* spi_handle = NULL;
|
||||||
|
|
||||||
void setDmaHandles(DMA_HandleTypeDef* txHandle, DMA_HandleTypeDef* rxHandle) {
|
void setDmaHandles(DMA_HandleTypeDef* txHandle, DMA_HandleTypeDef* rxHandle) {
|
||||||
hdma_tx = txHandle;
|
hdma_tx = txHandle;
|
||||||
@ -16,147 +17,182 @@ void setDmaHandles(DMA_HandleTypeDef* txHandle, DMA_HandleTypeDef* rxHandle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SPI MSP Initialization
|
* @brief SPI MSP Initialization
|
||||||
* This function configures the hardware resources used in this example:
|
* This function configures the hardware resources used in this example:
|
||||||
* - Peripheral's clock enable
|
* - Peripheral's clock enable
|
||||||
* - Peripheral's GPIO Configuration
|
* - Peripheral's GPIO Configuration
|
||||||
* - DMA configuration for transmission request by peripheral
|
* - DMA configuration for transmission request by peripheral
|
||||||
* - NVIC configuration for DMA interrupt request enable
|
* - NVIC configuration for DMA interrupt request enable
|
||||||
* @param hspi: SPI handle pointer
|
* @param hspi: SPI handle pointer
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
||||||
{
|
{
|
||||||
GPIO_InitTypeDef GPIO_InitStruct;
|
GPIO_InitTypeDef GPIO_InitStruct;
|
||||||
|
if(hspi == NULL) {
|
||||||
|
printf("HAL_SPI_MspInit: Invalid SPI handle!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
spi_handle = hspi;
|
||||||
|
|
||||||
if(hdma_tx == NULL || hdma_rx == NULL) {
|
if(hdma_tx == NULL || hdma_rx == NULL) {
|
||||||
printf("HAL_SPI_MspInit: Invalid DMA handles. Make sure to call setDmaHandles!\n");
|
printf("HAL_SPI_MspInit: Invalid DMA handles. Make sure to call setDmaHandles!\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (hspi->Instance == SPI1)
|
if (hspi->Instance == SPI1)
|
||||||
{
|
{
|
||||||
/*##-1- Enable peripherals and GPIO Clocks #################################*/
|
/*##-1- Enable peripherals and GPIO Clocks #################################*/
|
||||||
/* Enable GPIO TX/RX clock */
|
/* Enable GPIO TX/RX clock */
|
||||||
SPIx_SCK_GPIO_CLK_ENABLE();
|
SPIx_SCK_GPIO_CLK_ENABLE();
|
||||||
SPIx_MISO_GPIO_CLK_ENABLE();
|
SPIx_MISO_GPIO_CLK_ENABLE();
|
||||||
SPIx_MOSI_GPIO_CLK_ENABLE();
|
SPIx_MOSI_GPIO_CLK_ENABLE();
|
||||||
/* Enable SPI1 clock */
|
/* Enable SPI1 clock */
|
||||||
SPIx_CLK_ENABLE();
|
SPIx_CLK_ENABLE();
|
||||||
/* Enable DMA clock */
|
/* Enable DMA clock */
|
||||||
DMAx_CLK_ENABLE();
|
DMAx_CLK_ENABLE();
|
||||||
|
|
||||||
/*##-2- Configure peripheral GPIO ##########################################*/
|
/*##-2- Configure peripheral GPIO ##########################################*/
|
||||||
/* SPI SCK GPIO pin configuration */
|
/* SPI SCK GPIO pin configuration */
|
||||||
GPIO_InitStruct.Pin = SPIx_SCK_PIN;
|
GPIO_InitStruct.Pin = SPIx_SCK_PIN;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
GPIO_InitStruct.Alternate = SPIx_SCK_AF;
|
GPIO_InitStruct.Alternate = SPIx_SCK_AF;
|
||||||
HAL_GPIO_Init(SPIx_SCK_GPIO_PORT, &GPIO_InitStruct);
|
HAL_GPIO_Init(SPIx_SCK_GPIO_PORT, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* SPI MISO GPIO pin configuration */
|
/* SPI MISO GPIO pin configuration */
|
||||||
GPIO_InitStruct.Pin = SPIx_MISO_PIN;
|
GPIO_InitStruct.Pin = SPIx_MISO_PIN;
|
||||||
GPIO_InitStruct.Alternate = SPIx_MISO_AF;
|
GPIO_InitStruct.Alternate = SPIx_MISO_AF;
|
||||||
HAL_GPIO_Init(SPIx_MISO_GPIO_PORT, &GPIO_InitStruct);
|
HAL_GPIO_Init(SPIx_MISO_GPIO_PORT, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* SPI MOSI GPIO pin configuration */
|
/* SPI MOSI GPIO pin configuration */
|
||||||
GPIO_InitStruct.Pin = SPIx_MOSI_PIN;
|
GPIO_InitStruct.Pin = SPIx_MOSI_PIN;
|
||||||
GPIO_InitStruct.Alternate = SPIx_MOSI_AF;
|
GPIO_InitStruct.Alternate = SPIx_MOSI_AF;
|
||||||
HAL_GPIO_Init(SPIx_MOSI_GPIO_PORT, &GPIO_InitStruct);
|
HAL_GPIO_Init(SPIx_MOSI_GPIO_PORT, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*##-3- Configure the DMA ##################################################*/
|
/*##-3- Configure the DMA ##################################################*/
|
||||||
/* Configure the DMA handler for Transmission process */
|
/* Configure the DMA handler for Transmission process */
|
||||||
hdma_tx->Instance = SPIx_TX_DMA_STREAM;
|
hdma_tx->Instance = SPIx_TX_DMA_STREAM;
|
||||||
hdma_tx->Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
hdma_tx->Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
||||||
hdma_tx->Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
hdma_tx->Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
||||||
hdma_tx->Init.MemBurst = DMA_MBURST_INC4;
|
hdma_tx->Init.MemBurst = DMA_MBURST_INC4;
|
||||||
hdma_tx->Init.PeriphBurst = DMA_PBURST_INC4;
|
hdma_tx->Init.PeriphBurst = DMA_PBURST_INC4;
|
||||||
hdma_tx->Init.Request = SPIx_TX_DMA_REQUEST;
|
hdma_tx->Init.Request = SPIx_TX_DMA_REQUEST;
|
||||||
hdma_tx->Init.Direction = DMA_MEMORY_TO_PERIPH;
|
hdma_tx->Init.Direction = DMA_MEMORY_TO_PERIPH;
|
||||||
hdma_tx->Init.PeriphInc = DMA_PINC_DISABLE;
|
hdma_tx->Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
hdma_tx->Init.MemInc = DMA_MINC_ENABLE;
|
hdma_tx->Init.MemInc = DMA_MINC_ENABLE;
|
||||||
hdma_tx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
hdma_tx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
||||||
hdma_tx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
hdma_tx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
||||||
hdma_tx->Init.Mode = DMA_NORMAL;
|
hdma_tx->Init.Mode = DMA_NORMAL;
|
||||||
hdma_tx->Init.Priority = DMA_PRIORITY_LOW;
|
hdma_tx->Init.Priority = DMA_PRIORITY_LOW;
|
||||||
|
|
||||||
HAL_DMA_Init(hdma_tx);
|
HAL_DMA_Init(hdma_tx);
|
||||||
|
|
||||||
/* Associate the initialized DMA handle to the the SPI handle */
|
/* Associate the initialized DMA handle to the the SPI handle */
|
||||||
__HAL_LINKDMA(hspi, hdmatx, *hdma_tx);
|
__HAL_LINKDMA(hspi, hdmatx, *hdma_tx);
|
||||||
|
|
||||||
/* Configure the DMA handler for Transmission process */
|
/* Configure the DMA handler for Transmission process */
|
||||||
hdma_rx->Instance = SPIx_RX_DMA_STREAM;
|
hdma_rx->Instance = SPIx_RX_DMA_STREAM;
|
||||||
|
|
||||||
hdma_rx->Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
hdma_rx->Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
||||||
hdma_rx->Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
hdma_rx->Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;
|
||||||
hdma_rx->Init.MemBurst = DMA_MBURST_INC4;
|
hdma_rx->Init.MemBurst = DMA_MBURST_INC4;
|
||||||
hdma_rx->Init.PeriphBurst = DMA_PBURST_INC4;
|
hdma_rx->Init.PeriphBurst = DMA_PBURST_INC4;
|
||||||
hdma_rx->Init.Request = SPIx_RX_DMA_REQUEST;
|
hdma_rx->Init.Request = SPIx_RX_DMA_REQUEST;
|
||||||
hdma_rx->Init.Direction = DMA_PERIPH_TO_MEMORY;
|
hdma_rx->Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||||
hdma_rx->Init.PeriphInc = DMA_PINC_DISABLE;
|
hdma_rx->Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
hdma_rx->Init.MemInc = DMA_MINC_ENABLE;
|
hdma_rx->Init.MemInc = DMA_MINC_ENABLE;
|
||||||
hdma_rx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
hdma_rx->Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
||||||
hdma_rx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
hdma_rx->Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
||||||
hdma_rx->Init.Mode = DMA_NORMAL;
|
hdma_rx->Init.Mode = DMA_NORMAL;
|
||||||
hdma_rx->Init.Priority = DMA_PRIORITY_HIGH;
|
hdma_rx->Init.Priority = DMA_PRIORITY_HIGH;
|
||||||
|
|
||||||
HAL_DMA_Init(hdma_rx);
|
HAL_DMA_Init(hdma_rx);
|
||||||
|
|
||||||
/* Associate the initialized DMA handle to the the SPI handle */
|
/* Associate the initialized DMA handle to the the SPI handle */
|
||||||
__HAL_LINKDMA(hspi, hdmarx, *hdma_rx);
|
__HAL_LINKDMA(hspi, hdmarx, *hdma_rx);
|
||||||
|
|
||||||
/*##-4- Configure the NVIC for DMA #########################################*/
|
/*##-4- Configure the NVIC for DMA #########################################*/
|
||||||
/* NVIC configuration for DMA transfer complete interrupt (SPI1_TX) */
|
/* NVIC configuration for DMA transfer complete interrupt (SPI1_TX) */
|
||||||
HAL_NVIC_SetPriority(SPIx_DMA_TX_IRQn, 1, 1);
|
HAL_NVIC_SetPriority(SPIx_DMA_TX_IRQn, 1, 1);
|
||||||
HAL_NVIC_EnableIRQ(SPIx_DMA_TX_IRQn);
|
HAL_NVIC_EnableIRQ(SPIx_DMA_TX_IRQn);
|
||||||
|
|
||||||
/* NVIC configuration for DMA transfer complete interrupt (SPI1_RX) */
|
/* NVIC configuration for DMA transfer complete interrupt (SPI1_RX) */
|
||||||
HAL_NVIC_SetPriority(SPIx_DMA_RX_IRQn, 1, 0);
|
HAL_NVIC_SetPriority(SPIx_DMA_RX_IRQn, 1, 0);
|
||||||
HAL_NVIC_EnableIRQ(SPIx_DMA_RX_IRQn);
|
HAL_NVIC_EnableIRQ(SPIx_DMA_RX_IRQn);
|
||||||
|
|
||||||
/*##-5- Configure the NVIC for SPI #########################################*/
|
/*##-5- Configure the NVIC for SPI #########################################*/
|
||||||
/* NVIC configuration for SPI transfer complete interrupt (SPI1) */
|
/* NVIC configuration for SPI transfer complete interrupt (SPI1) */
|
||||||
HAL_NVIC_SetPriority(SPIx_IRQn, 1, 0);
|
HAL_NVIC_SetPriority(SPIx_IRQn, 1, 0);
|
||||||
HAL_NVIC_EnableIRQ(SPIx_IRQn);
|
HAL_NVIC_EnableIRQ(SPIx_IRQn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SPI MSP De-Initialization
|
* @brief SPI MSP De-Initialization
|
||||||
* This function frees the hardware resources used in this example:
|
* This function frees the hardware resources used in this example:
|
||||||
* - Disable the Peripheral's clock
|
* - Disable the Peripheral's clock
|
||||||
* - Revert GPIO, DMA and NVIC configuration to their default state
|
* - Revert GPIO, DMA and NVIC configuration to their default state
|
||||||
* @param hspi: SPI handle pointer
|
* @param hspi: SPI handle pointer
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
|
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
|
||||||
{
|
{
|
||||||
if(hspi->Instance == SPIx)
|
if(hspi->Instance == SPIx)
|
||||||
{
|
{
|
||||||
/*##-1- Reset peripherals ##################################################*/
|
/*##-1- Reset peripherals ##################################################*/
|
||||||
SPIx_FORCE_RESET();
|
SPIx_FORCE_RESET();
|
||||||
SPIx_RELEASE_RESET();
|
SPIx_RELEASE_RESET();
|
||||||
|
|
||||||
/*##-2- Disable peripherals and GPIO Clocks ################################*/
|
/*##-2- Disable peripherals and GPIO Clocks ################################*/
|
||||||
/* Deconfigure SPI SCK */
|
/* Deconfigure SPI SCK */
|
||||||
HAL_GPIO_DeInit(SPIx_SCK_GPIO_PORT, SPIx_SCK_PIN);
|
HAL_GPIO_DeInit(SPIx_SCK_GPIO_PORT, SPIx_SCK_PIN);
|
||||||
/* Deconfigure SPI MISO */
|
/* Deconfigure SPI MISO */
|
||||||
HAL_GPIO_DeInit(SPIx_MISO_GPIO_PORT, SPIx_MISO_PIN);
|
HAL_GPIO_DeInit(SPIx_MISO_GPIO_PORT, SPIx_MISO_PIN);
|
||||||
/* Deconfigure SPI MOSI */
|
/* Deconfigure SPI MOSI */
|
||||||
HAL_GPIO_DeInit(SPIx_MOSI_GPIO_PORT, SPIx_MOSI_PIN);
|
HAL_GPIO_DeInit(SPIx_MOSI_GPIO_PORT, SPIx_MOSI_PIN);
|
||||||
|
|
||||||
/*##-3- Disable the DMA ####################################################*/
|
/*##-3- Disable the DMA ####################################################*/
|
||||||
/* De-Initialize the DMA associated to transmission process */
|
/* De-Initialize the DMA associated to transmission process */
|
||||||
HAL_DMA_DeInit(hdma_tx);
|
HAL_DMA_DeInit(hdma_tx);
|
||||||
/* De-Initialize the DMA associated to reception process */
|
/* De-Initialize the DMA associated to reception process */
|
||||||
HAL_DMA_DeInit(hdma_rx);
|
HAL_DMA_DeInit(hdma_rx);
|
||||||
|
|
||||||
/*##-4- Disable the NVIC for DMA ###########################################*/
|
/*##-4- Disable the NVIC for DMA ###########################################*/
|
||||||
HAL_NVIC_DisableIRQ(SPIx_DMA_TX_IRQn);
|
HAL_NVIC_DisableIRQ(SPIx_DMA_TX_IRQn);
|
||||||
HAL_NVIC_DisableIRQ(SPIx_DMA_RX_IRQn);
|
HAL_NVIC_DisableIRQ(SPIx_DMA_RX_IRQn);
|
||||||
|
|
||||||
/*##-5- Disable the NVIC for SPI ###########################################*/
|
/*##-5- Disable the NVIC for SPI ###########################################*/
|
||||||
HAL_NVIC_EnableIRQ(SPIx_IRQn);
|
HAL_NVIC_EnableIRQ(SPIx_IRQn);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles DMA Rx interrupt request.
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SPIx_DMA_RX_IRQHandler(void)
|
||||||
|
{
|
||||||
|
HAL_DMA_IRQHandler(spi_handle->hdmarx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles DMA Tx interrupt request.
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SPIx_DMA_TX_IRQHandler(void)
|
||||||
|
{
|
||||||
|
HAL_DMA_IRQHandler(spi_handle->hdmatx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles SPIx interrupt request.
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void SPIx_IRQHandler(void)
|
||||||
|
{
|
||||||
|
HAL_SPI_IRQHandler(spi_handle);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user