@@ -761,6 +761,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
761
761
762
762
/* Update error code */
763
763
hdma -> ErrorCode |= HAL_DMA_ERROR_TE ;
764
+
765
+ /* Change the DMA state */
766
+ hdma -> State = HAL_DMA_STATE_ERROR ; // FIX
764
767
}
765
768
}
766
769
/* FIFO Error Interrupt management ******************************************/
@@ -773,6 +776,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
773
776
774
777
/* Update error code */
775
778
hdma -> ErrorCode |= HAL_DMA_ERROR_FE ;
779
+
780
+ /* Change the DMA state */
781
+ hdma -> State = HAL_DMA_STATE_ERROR ; // FIX
776
782
}
777
783
}
778
784
/* Direct Mode Error Interrupt management ***********************************/
@@ -785,6 +791,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
785
791
786
792
/* Update error code */
787
793
hdma -> ErrorCode |= HAL_DMA_ERROR_DME ;
794
+
795
+ /* Change the DMA state */
796
+ hdma -> State = HAL_DMA_STATE_ERROR ; // FIX
788
797
}
789
798
}
790
799
/* Half Transfer Complete Interrupt management ******************************/
@@ -801,6 +810,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
801
810
/* Current memory buffer used is Memory 0 */
802
811
if ((hdma -> Instance -> CR & DMA_SxCR_CT ) == RESET )
803
812
{
813
+ /* Change DMA peripheral state */
814
+ hdma -> State = HAL_DMA_STATE_READY_HALF_MEM0 ; // FIX
815
+
804
816
if (hdma -> XferHalfCpltCallback != NULL )
805
817
{
806
818
/* Half transfer callback */
@@ -810,6 +822,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
810
822
/* Current memory buffer used is Memory 1 */
811
823
else
812
824
{
825
+ /* Change DMA peripheral state */
826
+ hdma -> State = HAL_DMA_STATE_READY_HALF_MEM1 ; // FIX
827
+
813
828
if (hdma -> XferM1HalfCpltCallback != NULL )
814
829
{
815
830
/* Half transfer callback */
@@ -826,6 +841,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
826
841
hdma -> Instance -> CR &= ~(DMA_IT_HT );
827
842
}
828
843
844
+ /* Change DMA peripheral state */
845
+ hdma -> State = HAL_DMA_STATE_READY_HALF_MEM0 ; // FIX
846
+
829
847
if (hdma -> XferHalfCpltCallback != NULL )
830
848
{
831
849
/* Half transfer callback */
@@ -874,6 +892,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
874
892
/* Current memory buffer used is Memory 0 */
875
893
if ((hdma -> Instance -> CR & DMA_SxCR_CT ) == RESET )
876
894
{
895
+ /* Change DMA peripheral state */
896
+ hdma -> State = HAL_DMA_STATE_READY_MEM1 ; // FIX
897
+
877
898
if (hdma -> XferM1CpltCallback != NULL )
878
899
{
879
900
/* Transfer complete Callback for memory1 */
@@ -883,6 +904,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
883
904
/* Current memory buffer used is Memory 1 */
884
905
else
885
906
{
907
+ /* Change DMA peripheral state */
908
+ hdma -> State = HAL_DMA_STATE_READY_MEM0 ; // FIX
909
+
886
910
if (hdma -> XferCpltCallback != NULL )
887
911
{
888
912
/* Transfer complete Callback for memory0 */
@@ -893,6 +917,9 @@ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)
893
917
/* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */
894
918
else
895
919
{
920
+ /* Change DMA peripheral state */
921
+ hdma -> State = HAL_DMA_STATE_READY_MEM0 ; // FIX
922
+
896
923
if ((hdma -> Instance -> CR & DMA_SxCR_CIRC ) == RESET )
897
924
{
898
925
/* Disable the transfer complete interrupt */
0 commit comments