STM32L4xx_HAL_Driver  1.14.0
SWPMI IRQ handler and callbacks

SWPMI IRQ handler. More...

Functions

void HAL_SWPMI_IRQHandler (SWPMI_HandleTypeDef *hswpmi)
 Handle SWPMI interrupt request. More...
 
__weak void HAL_SWPMI_TxCpltCallback (SWPMI_HandleTypeDef *hswpmi)
 Tx Transfer completed callback. More...
 
__weak void HAL_SWPMI_TxHalfCpltCallback (SWPMI_HandleTypeDef *hswpmi)
 Tx Half Transfer completed callback. More...
 
__weak void HAL_SWPMI_RxCpltCallback (SWPMI_HandleTypeDef *hswpmi)
 Rx Transfer completed callback. More...
 
__weak void HAL_SWPMI_RxHalfCpltCallback (SWPMI_HandleTypeDef *hswpmi)
 Rx Half Transfer completed callback. More...
 
__weak void HAL_SWPMI_ErrorCallback (SWPMI_HandleTypeDef *hswpmi)
 SWPMI error callback. More...
 

Detailed Description

SWPMI IRQ handler.

  ==============================================================================
                      ##### SWPMI IRQ handler and callbacks  #####
  ==============================================================================
[..]  This section provides SWPMI IRQ handler and callback functions called within
      the IRQ handler.

Function Documentation

◆ HAL_SWPMI_ErrorCallback()

__weak void HAL_SWPMI_ErrorCallback ( SWPMI_HandleTypeDef hswpmi)

SWPMI error callback.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1514 of file stm32l4xx_hal_swpmi.c.

1515 {
1516  /* Prevent unused argument(s) compilation warning */
1517  UNUSED(hswpmi);
1518 
1519  /* NOTE : This function should not be modified, when the callback is needed,
1520  the HAL_SWPMI_ErrorCallback is to be implemented in the user file
1521  */
1522 }

◆ HAL_SWPMI_IRQHandler()

void HAL_SWPMI_IRQHandler ( SWPMI_HandleTypeDef hswpmi)

Handle SWPMI interrupt request.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1282 of file stm32l4xx_hal_swpmi.c.

1283 {
1284  uint32_t regisr = READ_REG(hswpmi->Instance->ISR);
1285  uint32_t regier = READ_REG(hswpmi->Instance->IER);
1286  uint32_t errcode = HAL_SWPMI_ERROR_NONE;
1287 
1288  /* SWPMI CRC error interrupt occurred --------------------------------------*/
1289  if(((regisr & SWPMI_FLAG_RXBERF) != 0U) && ((regier & SWPMI_IT_RXBERIE) != 0U))
1290  {
1291  /* Disable Receive CRC interrupt */
1292  CLEAR_BIT(hswpmi->Instance->IER, SWPMI_IT_RXBERIE | SWPMI_IT_RXBFIE);
1293  /* Clear Receive CRC and Receive buffer full flag */
1294  WRITE_REG(hswpmi->Instance->ICR, SWPMI_FLAG_RXBERF | SWPMI_FLAG_RXBFF);
1295 
1296  errcode |= HAL_SWPMI_ERROR_CRC;
1297  }
1298 
1299  /* SWPMI Over-Run interrupt occurred -----------------------------------------*/
1300  if(((regisr & SWPMI_FLAG_RXOVRF) != 0U) && ((regier & SWPMI_IT_RXOVRIE) != 0U))
1301  {
1302  /* Disable Receive overrun interrupt */
1303  CLEAR_BIT(hswpmi->Instance->IER, SWPMI_IT_RXOVRIE);
1304  /* Clear Receive overrun flag */
1305  WRITE_REG(hswpmi->Instance->ICR, SWPMI_FLAG_RXOVRF);
1306 
1307  errcode |= HAL_SWPMI_ERROR_OVR;
1308  }
1309 
1310  /* SWPMI Under-Run interrupt occurred -----------------------------------------*/
1311  if(((regisr & SWPMI_FLAG_TXUNRF) != 0U) && ((regier & SWPMI_IT_TXUNRIE) != 0U))
1312  {
1313  /* Disable Transmit under run interrupt */
1314  CLEAR_BIT(hswpmi->Instance->IER, SWPMI_IT_TXUNRIE);
1315  /* Clear Transmit under run flag */
1316  WRITE_REG(hswpmi->Instance->ICR, SWPMI_FLAG_TXUNRF);
1317 
1318  errcode |= HAL_SWPMI_ERROR_UDR;
1319  }
1320 
1321  /* Call SWPMI Error Call back function if needed --------------------------*/
1322  if(errcode != HAL_SWPMI_ERROR_NONE)
1323  {
1324  hswpmi->ErrorCode |= errcode;
1325 
1326  if((errcode & HAL_SWPMI_ERROR_UDR) != 0U)
1327  {
1328  /* Check TXDMA transfer to abort */
1329  if(HAL_IS_BIT_SET(hswpmi->Instance->CR, SWPMI_CR_TXDMA))
1330  {
1331  /* Disable DMA TX at SWPMI level */
1332  CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_TXDMA);
1333 
1334  /* Abort the USART DMA Tx channel */
1335  if(hswpmi->hdmatx != NULL)
1336  {
1337  /* Set the SWPMI Tx DMA Abort callback :
1338  will lead to call HAL_SWPMI_ErrorCallback() at end of DMA abort procedure */
1339  hswpmi->hdmatx->XferAbortCallback = SWPMI_DMAAbortOnError;
1340  /* Abort DMA TX */
1341  if(HAL_DMA_Abort_IT(hswpmi->hdmatx) != HAL_OK)
1342  {
1343  /* Call Directly hswpmi->hdmatx->XferAbortCallback function in case of error */
1344  hswpmi->hdmatx->XferAbortCallback(hswpmi->hdmatx);
1345  }
1346  }
1347  else
1348  {
1349  /* Set the SWPMI state ready to be able to start again the process */
1350  hswpmi->State = HAL_SWPMI_STATE_READY;
1351 
1352 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
1353  hswpmi->ErrorCallback(hswpmi);
1354 #else
1355  HAL_SWPMI_ErrorCallback(hswpmi);
1356 #endif
1357  }
1358  }
1359  else
1360  {
1361  /* Set the SWPMI state ready to be able to start again the process */
1362  hswpmi->State = HAL_SWPMI_STATE_READY;
1363 
1364 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
1365  hswpmi->ErrorCallback(hswpmi);
1366 #else
1367  HAL_SWPMI_ErrorCallback(hswpmi);
1368 #endif
1369  }
1370  }
1371  else
1372  {
1373  /* Check RXDMA transfer to abort */
1374  if(HAL_IS_BIT_SET(hswpmi->Instance->CR, SWPMI_CR_RXDMA))
1375  {
1376  /* Disable DMA RX at SWPMI level */
1377  CLEAR_BIT(hswpmi->Instance->CR, SWPMI_CR_RXDMA);
1378 
1379  /* Abort the USART DMA Rx channel */
1380  if(hswpmi->hdmarx != NULL)
1381  {
1382  /* Set the SWPMI Rx DMA Abort callback :
1383  will lead to call HAL_SWPMI_ErrorCallback() at end of DMA abort procedure */
1384  hswpmi->hdmarx->XferAbortCallback = SWPMI_DMAAbortOnError;
1385  /* Abort DMA RX */
1386  if(HAL_DMA_Abort_IT(hswpmi->hdmarx) != HAL_OK)
1387  {
1388  /* Call Directly hswpmi->hdmarx->XferAbortCallback function in case of error */
1389  hswpmi->hdmarx->XferAbortCallback(hswpmi->hdmarx);
1390  }
1391  }
1392  else
1393  {
1394  /* Set the SWPMI state ready to be able to start again the process */
1395  hswpmi->State = HAL_SWPMI_STATE_READY;
1396 
1397 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
1398  hswpmi->ErrorCallback(hswpmi);
1399 #else
1400  HAL_SWPMI_ErrorCallback(hswpmi);
1401 #endif
1402  }
1403  }
1404  else
1405  {
1406  /* Set the SWPMI state ready to be able to start again the process */
1407  hswpmi->State = HAL_SWPMI_STATE_READY;
1408 
1409 #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1)
1410  hswpmi->ErrorCallback(hswpmi);
1411 #else
1412  HAL_SWPMI_ErrorCallback(hswpmi);
1413 #endif
1414  }
1415  }
1416  }
1417 
1418  /* SWPMI in mode Receiver ---------------------------------------------------*/
1419  if(((regisr & SWPMI_FLAG_RXNE) != 0U) && ((regier & SWPMI_IT_RIE) != 0U))
1420  {
1421  SWPMI_Receive_IT(hswpmi);
1422  }
1423 
1424  /* SWPMI in mode Transmitter ------------------------------------------------*/
1425  if(((regisr & SWPMI_FLAG_TXE) != 0U) && ((regier & SWPMI_IT_TIE) != 0U))
1426  {
1427  SWPMI_Transmit_IT(hswpmi);
1428  }
1429 
1430  /* SWPMI in mode Transmitter (Transmit buffer empty) ------------------------*/
1431  if(((regisr & SWPMI_FLAG_TXBEF) != 0U) && ((regier & SWPMI_IT_TXBEIE) != 0U))
1432  {
1433  SWPMI_EndTransmit_IT(hswpmi);
1434  }
1435 
1436  /* SWPMI in mode Receiver (Receive buffer full) -----------------------------*/
1437  if(((regisr & SWPMI_FLAG_RXBFF) != 0U) && ((regier & SWPMI_IT_RXBFIE) != 0U))
1438  {
1439  SWPMI_EndReceive_IT(hswpmi);
1440  }
1441 
1442  /* Both Transmission and reception complete ---------------------------------*/
1443  if(((regisr & SWPMI_FLAG_TCF) != 0U) && ((regier & SWPMI_IT_TCIE) != 0U))
1444  {
1446  }
1447 }
static void SWPMI_EndTransmitReceive_IT(SWPMI_HandleTypeDef *hswpmi)
Wraps up transmission and reception in non-blocking mode.
static void SWPMI_EndTransmit_IT(SWPMI_HandleTypeDef *hswpmi)
Wraps up transmission in non-blocking mode.
static void SWPMI_DMAAbortOnError(DMA_HandleTypeDef *hdma)
DMA SWPMI communication abort callback.
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
static void SWPMI_EndReceive_IT(SWPMI_HandleTypeDef *hswpmi)
Wraps up reception in non-blocking mode.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
return HAL_OK
__weak void HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi)
SWPMI error callback.
static void SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi)
Receive an amount of data in interrupt mode.
static void SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi)
Transmit an amount of data in interrupt mode.

◆ HAL_SWPMI_RxCpltCallback()

__weak void HAL_SWPMI_RxCpltCallback ( SWPMI_HandleTypeDef hswpmi)

Rx Transfer completed callback.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1484 of file stm32l4xx_hal_swpmi.c.

1485 {
1486  /* Prevent unused argument(s) compilation warning */
1487  UNUSED(hswpmi);
1488 
1489  /* NOTE : This function should not be modified, when the callback is needed,
1490  the HAL_SWPMI_RxCpltCallback is to be implemented in the user file
1491  */
1492 }

◆ HAL_SWPMI_RxHalfCpltCallback()

__weak void HAL_SWPMI_RxHalfCpltCallback ( SWPMI_HandleTypeDef hswpmi)

Rx Half Transfer completed callback.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1499 of file stm32l4xx_hal_swpmi.c.

1500 {
1501  /* Prevent unused argument(s) compilation warning */
1502  UNUSED(hswpmi);
1503 
1504  /* NOTE: This function should not be modified, when the callback is needed,
1505  the HAL_SWPMI_RxHalfCpltCallback is to be implemented in the user file
1506  */
1507 }

◆ HAL_SWPMI_TxCpltCallback()

__weak void HAL_SWPMI_TxCpltCallback ( SWPMI_HandleTypeDef hswpmi)

Tx Transfer completed callback.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1454 of file stm32l4xx_hal_swpmi.c.

1455 {
1456  /* Prevent unused argument(s) compilation warning */
1457  UNUSED(hswpmi);
1458 
1459  /* NOTE : This function should not be modified, when the callback is needed,
1460  the HAL_SWPMI_TxCpltCallback is to be implemented in the user file
1461  */
1462 }

◆ HAL_SWPMI_TxHalfCpltCallback()

__weak void HAL_SWPMI_TxHalfCpltCallback ( SWPMI_HandleTypeDef hswpmi)

Tx Half Transfer completed callback.

Parameters
hswpmiSWPMI handle
Return values
None

Definition at line 1469 of file stm32l4xx_hal_swpmi.c.

1470 {
1471  /* Prevent unused argument(s) compilation warning */
1472  UNUSED(hswpmi);
1473 
1474  /* NOTE: This function should not be modified, when the callback is needed,
1475  the HAL_SWPMI_TxHalfCpltCallback is to be implemented in the user file
1476  */
1477 }