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