105 #if defined (STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) 111 #ifdef HAL_HASH_MODULE_ENABLED 123 static void HASH_GetDigest(uint8_t *pMsgDigest, uint8_t Size);
124 static void HASH_WriteData(uint8_t *pInBuffer, uint32_t Size);
141 HASH_HandleTypeDef* hhash = ( HASH_HandleTypeDef* )((
DMA_HandleTypeDef* )hdma)->Parent;
142 uint32_t inputaddr = 0;
143 uint32_t buffersize = 0;
151 hhash->State = HAL_HASH_STATE_READY;
154 HAL_HASH_InCpltCallback(hhash);
159 hhash->HashInCount++;
163 if(hhash->HashInCount <= 2)
166 if(hhash->HashInCount == 1)
168 inputaddr = (uint32_t)hhash->pHashInBuffPtr;
169 buffersize = hhash->HashBuffSize;
172 else if(hhash->HashInCount == 2)
174 inputaddr = (uint32_t)hhash->Init.pKey;
175 buffersize = hhash->Init.KeySize;
181 hhash->hdmain->XferCpltCallback = HASH_DMAXferCplt;
184 HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&
HASH->DIN, (buffersize%4 ? (buffersize+3)/4:buffersize/4));
195 hhash->HashInCount = 0;
198 hhash->State = HAL_HASH_STATE_READY;
201 HAL_HASH_InCpltCallback(hhash);
213 HASH_HandleTypeDef* hhash = ( HASH_HandleTypeDef* )((
DMA_HandleTypeDef* )hdma)->Parent;
214 hhash->State= HAL_HASH_STATE_READY;
215 HAL_HASH_ErrorCallback(hhash);
224 static void HASH_WriteData(uint8_t *pInBuffer, uint32_t Size)
226 uint32_t buffercounter;
227 uint32_t inputaddr = (uint32_t) pInBuffer;
229 for(buffercounter = 0; buffercounter < Size; buffercounter+=4)
231 HASH->DIN = *(uint32_t*)inputaddr;
242 static void HASH_GetDigest(uint8_t *pMsgDigest, uint8_t Size)
244 uint32_t msgdigest = (uint32_t)pMsgDigest;
250 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[0]);
252 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[1]);
254 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[2]);
256 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[3]);
260 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[0]);
262 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[1]);
264 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[2]);
266 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[3]);
268 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[4]);
272 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[0]);
274 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[1]);
276 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[2]);
278 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[3]);
280 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[4]);
288 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[0]);
290 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[1]);
292 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[2]);
294 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[3]);
296 *(uint32_t*)(msgdigest) =
__REV(
HASH->HR[4]);
355 if(hhash->State == HAL_HASH_STATE_RESET)
360 HAL_HASH_MspInit(hhash);
364 hhash->State = HAL_HASH_STATE_BUSY;
367 hhash->HashInCount = 0;
368 hhash->HashBuffSize = 0;
369 hhash->HashITCounter = 0;
372 HASH->CR |= (uint32_t) (hhash->Init.DataType);
375 hhash->State = HAL_HASH_STATE_READY;
378 hhash->Phase = HAL_HASH_PHASE_READY;
400 hhash->State = HAL_HASH_STATE_BUSY;
403 hhash->Phase = HAL_HASH_PHASE_READY;
406 hhash->HashInCount = 0;
407 hhash->HashBuffSize = 0;
408 hhash->HashITCounter = 0;
411 HAL_HASH_MspDeInit(hhash);
414 hhash->State = HAL_HASH_STATE_RESET;
429 __weak
void HAL_HASH_MspInit(HASH_HandleTypeDef *hhash)
445 __weak
void HAL_HASH_MspDeInit(HASH_HandleTypeDef *hhash)
461 __weak
void HAL_HASH_InCpltCallback(HASH_HandleTypeDef *hhash)
477 __weak
void HAL_HASH_ErrorCallback(HASH_HandleTypeDef *hhash)
494 __weak
void HAL_HASH_DgstCpltCallback(HASH_HandleTypeDef *hhash)
538 HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout)
540 uint32_t tickstart = 0;
546 hhash->State = HAL_HASH_STATE_BUSY;
549 if(hhash->Phase == HAL_HASH_PHASE_READY)
557 hhash->Phase = HAL_HASH_PHASE_PROCESS;
560 __HAL_HASH_SET_NBVALIDBITS(Size);
563 HASH_WriteData(pInBuffer, Size);
566 __HAL_HASH_START_DIGEST();
576 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
579 hhash->State = HAL_HASH_STATE_TIMEOUT;
590 HASH_GetDigest(pOutBuffer, 16);
593 hhash->State = HAL_HASH_STATE_READY;
613 HAL_StatusTypeDef HAL_HASH_MD5_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
619 hhash->State = HAL_HASH_STATE_BUSY;
622 if(hhash->Phase == HAL_HASH_PHASE_READY)
630 hhash->Phase = HAL_HASH_PHASE_PROCESS;
633 __HAL_HASH_SET_NBVALIDBITS(Size);
636 HASH_WriteData(pInBuffer, Size);
639 hhash->State = HAL_HASH_STATE_READY;
660 HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout)
662 uint32_t tickstart = 0;
668 hhash->State = HAL_HASH_STATE_BUSY;
671 if(hhash->Phase == HAL_HASH_PHASE_READY)
679 hhash->Phase = HAL_HASH_PHASE_PROCESS;
682 __HAL_HASH_SET_NBVALIDBITS(Size);
685 HASH_WriteData(pInBuffer, Size);
688 __HAL_HASH_START_DIGEST();
698 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
701 hhash->State = HAL_HASH_STATE_TIMEOUT;
712 HASH_GetDigest(pOutBuffer, 20);
715 hhash->State = HAL_HASH_STATE_READY;
734 HAL_StatusTypeDef HAL_HASH_SHA1_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
743 hhash->State = HAL_HASH_STATE_BUSY;
746 if(hhash->Phase == HAL_HASH_PHASE_READY)
754 hhash->Phase = HAL_HASH_PHASE_PROCESS;
757 __HAL_HASH_SET_NBVALIDBITS(Size);
760 HASH_WriteData(pInBuffer, Size);
763 hhash->State = HAL_HASH_STATE_READY;
803 HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer)
807 uint32_t buffercounter;
808 uint32_t inputcounter;
813 if(hhash->State == HAL_HASH_STATE_READY)
816 hhash->State = HAL_HASH_STATE_BUSY;
818 hhash->HashInCount = Size;
819 hhash->pHashInBuffPtr = pInBuffer;
820 hhash->pHashOutBuffPtr = pOutBuffer;
823 if(hhash->Phase == HAL_HASH_PHASE_READY)
826 HASH->CR |= HASH_ALGOSELECTION_MD5;
833 hhash->HashITCounter = 0;
836 hhash->Phase = HAL_HASH_PHASE_PROCESS;
842 HASH->IMR = (HASH_IT_DINI | HASH_IT_DCI);
847 if(__HAL_HASH_GET_FLAG(HASH_FLAG_DCIS))
849 outputaddr = (uint32_t)hhash->pHashOutBuffPtr;
851 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[0]);
853 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[1]);
855 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[2]);
857 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[3]);
859 if(hhash->HashInCount == 0)
864 hhash->State = HAL_HASH_STATE_READY;
866 HAL_HASH_DgstCpltCallback(hhash);
876 if(__HAL_HASH_GET_FLAG(HASH_FLAG_DINIS))
878 if(hhash->HashInCount >= 68)
880 inputaddr = (uint32_t)hhash->pHashInBuffPtr;
882 for(buffercounter = 0; buffercounter < 64; buffercounter+=4)
884 HASH->DIN = *(uint32_t*)inputaddr;
887 if(hhash->HashITCounter == 0)
889 HASH->DIN = *(uint32_t*)inputaddr;
891 if(hhash->HashInCount >= 68)
894 hhash->HashInCount -= 68;
895 hhash->pHashInBuffPtr+= 68;
899 hhash->HashInCount = 0;
900 hhash->pHashInBuffPtr+= hhash->HashInCount;
903 hhash->HashITCounter = 1;
908 hhash->HashInCount -= 64;
909 hhash->pHashInBuffPtr+= 64;
915 inputaddr = (uint32_t)hhash->pHashInBuffPtr;
917 inputcounter = hhash->HashInCount;
919 HASH->IMR &= ~(HASH_IT_DINI);
921 __HAL_HASH_SET_NBVALIDBITS(inputcounter);
923 if((inputcounter > 4) && (inputcounter%4))
925 inputcounter = (inputcounter+4-inputcounter%4);
927 else if ((inputcounter < 4) && (inputcounter != 0))
933 for(buffercounter = 0; buffercounter < inputcounter/4; buffercounter++)
935 HASH->DIN = *(uint32_t*)inputaddr;
939 __HAL_HASH_START_DIGEST();
941 hhash->HashInCount = 0;
943 HAL_HASH_InCpltCallback(hhash);
965 HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer)
969 uint32_t buffercounter;
970 uint32_t inputcounter;
975 if(hhash->State == HAL_HASH_STATE_READY)
978 hhash->State = HAL_HASH_STATE_BUSY;
980 hhash->HashInCount = Size;
981 hhash->pHashInBuffPtr = pInBuffer;
982 hhash->pHashOutBuffPtr = pOutBuffer;
985 if(hhash->Phase == HAL_HASH_PHASE_READY)
988 HASH->CR |= HASH_ALGOSELECTION_SHA1;
995 hhash->HashITCounter = 0;
998 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1004 HASH->IMR = (HASH_IT_DINI | HASH_IT_DCI);
1009 if(__HAL_HASH_GET_FLAG(HASH_FLAG_DCIS))
1011 outputaddr = (uint32_t)hhash->pHashOutBuffPtr;
1013 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[0]);
1015 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[1]);
1017 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[2]);
1019 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[3]);
1021 *(uint32_t*)(outputaddr) =
__REV(
HASH->HR[4]);
1022 if(hhash->HashInCount == 0)
1027 hhash->State = HAL_HASH_STATE_READY;
1029 HAL_HASH_DgstCpltCallback(hhash);
1038 if(__HAL_HASH_GET_FLAG(HASH_FLAG_DINIS))
1040 if(hhash->HashInCount >= 68)
1042 inputaddr = (uint32_t)hhash->pHashInBuffPtr;
1044 for(buffercounter = 0; buffercounter < 64; buffercounter+=4)
1046 HASH->DIN = *(uint32_t*)inputaddr;
1049 if(hhash->HashITCounter == 0)
1051 HASH->DIN = *(uint32_t*)inputaddr;
1053 if(hhash->HashInCount >= 68)
1056 hhash->HashInCount -= 68;
1057 hhash->pHashInBuffPtr+= 68;
1061 hhash->HashInCount = 0;
1062 hhash->pHashInBuffPtr+= hhash->HashInCount;
1065 hhash->HashITCounter = 1;
1070 hhash->HashInCount -= 64;
1071 hhash->pHashInBuffPtr+= 64;
1077 inputaddr = (uint32_t)hhash->pHashInBuffPtr;
1079 inputcounter = hhash->HashInCount;
1081 HASH->IMR &= ~(HASH_IT_DINI);
1083 __HAL_HASH_SET_NBVALIDBITS(inputcounter);
1085 if((inputcounter > 4) && (inputcounter%4))
1087 inputcounter = (inputcounter+4-inputcounter%4);
1089 else if ((inputcounter < 4) && (inputcounter != 0))
1094 for(buffercounter = 0; buffercounter < inputcounter/4; buffercounter++)
1096 HASH->DIN = *(uint32_t*)inputaddr;
1100 __HAL_HASH_START_DIGEST();
1102 hhash->HashInCount = 0;
1104 HAL_HASH_InCpltCallback(hhash);
1121 void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash)
1125 case HASH_ALGOSELECTION_MD5:
1126 HAL_HASH_MD5_Start_IT(hhash,
NULL, 0,
NULL);
1129 case HASH_ALGOSELECTION_SHA1:
1130 HAL_HASH_SHA1_Start_IT(hhash,
NULL, 0,
NULL);
1168 HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
1170 uint32_t inputaddr = (uint32_t)pInBuffer;
1176 hhash->State = HAL_HASH_STATE_BUSY;
1179 if(hhash->Phase == HAL_HASH_PHASE_READY)
1187 __HAL_HASH_SET_NBVALIDBITS(Size);
1190 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1193 hhash->hdmain->XferCpltCallback = HASH_DMAXferCplt;
1195 hhash->hdmain->XferErrorCallback = HASH_DMAError;
1198 HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&
HASH->DIN, (Size%4 ? (Size+3)/4:Size/4));
1218 HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout)
1220 uint32_t tickstart = 0;
1226 hhash->State = HAL_HASH_STATE_BUSY;
1236 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
1239 hhash->State = HAL_HASH_STATE_TIMEOUT;
1250 HASH_GetDigest(pOutBuffer, 16);
1253 hhash->State = HAL_HASH_STATE_READY;
1272 HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
1274 uint32_t inputaddr = (uint32_t)pInBuffer;
1280 hhash->State = HAL_HASH_STATE_BUSY;
1283 if(hhash->Phase == HAL_HASH_PHASE_READY)
1287 HASH->CR |= HASH_ALGOSELECTION_SHA1;
1292 __HAL_HASH_SET_NBVALIDBITS(Size);
1295 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1298 hhash->hdmain->XferCpltCallback = HASH_DMAXferCplt;
1300 hhash->hdmain->XferErrorCallback = HASH_DMAError;
1303 HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&
HASH->DIN, (Size%4 ? (Size+3)/4:Size/4));
1323 HAL_StatusTypeDef HAL_HASH_SHA1_Finish(HASH_HandleTypeDef *hhash, uint8_t* pOutBuffer, uint32_t Timeout)
1325 uint32_t tickstart = 0;
1331 hhash->State = HAL_HASH_STATE_BUSY;
1340 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
1343 hhash->State = HAL_HASH_STATE_TIMEOUT;
1354 HASH_GetDigest(pOutBuffer, 20);
1357 hhash->State = HAL_HASH_STATE_READY;
1399 HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout)
1401 uint32_t tickstart = 0;
1407 hhash->State = HAL_HASH_STATE_BUSY;
1410 if(hhash->Phase == HAL_HASH_PHASE_READY)
1413 if(hhash->Init.KeySize > 64)
1416 HASH->CR |= (HASH_ALGOSELECTION_MD5 | HASH_ALGOMODE_HMAC | HASH_HMAC_KEYTYPE_LONGKEY |
HASH_CR_INIT);
1426 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1430 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1433 HASH_WriteData(hhash->Init.pKey, hhash->Init.KeySize);
1436 __HAL_HASH_START_DIGEST();
1446 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
1449 hhash->State = HAL_HASH_STATE_TIMEOUT;
1460 __HAL_HASH_SET_NBVALIDBITS(Size);
1463 HASH_WriteData(pInBuffer, Size);
1466 __HAL_HASH_START_DIGEST();
1479 hhash->State = HAL_HASH_STATE_TIMEOUT;
1490 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1493 HASH_WriteData(hhash->Init.pKey, hhash->Init.KeySize);
1496 __HAL_HASH_START_DIGEST();
1509 hhash->State = HAL_HASH_STATE_TIMEOUT;
1520 HASH_GetDigest(pOutBuffer, 16);
1523 hhash->State = HAL_HASH_STATE_READY;
1544 HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t* pOutBuffer, uint32_t Timeout)
1546 uint32_t tickstart = 0;
1552 hhash->State = HAL_HASH_STATE_BUSY;
1555 if(hhash->Phase == HAL_HASH_PHASE_READY)
1558 if(hhash->Init.KeySize > 64)
1561 HASH->CR |= (HASH_ALGOSELECTION_SHA1 | HASH_ALGOMODE_HMAC | HASH_HMAC_KEYTYPE_LONGKEY |
HASH_CR_INIT);
1571 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1575 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1578 HASH_WriteData(hhash->Init.pKey, hhash->Init.KeySize);
1581 __HAL_HASH_START_DIGEST();
1591 if((Timeout == 0)||((
HAL_GetTick() - tickstart ) > Timeout))
1594 hhash->State = HAL_HASH_STATE_TIMEOUT;
1605 __HAL_HASH_SET_NBVALIDBITS(Size);
1608 HASH_WriteData(pInBuffer, Size);
1611 __HAL_HASH_START_DIGEST();
1624 hhash->State = HAL_HASH_STATE_TIMEOUT;
1635 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1638 HASH_WriteData(hhash->Init.pKey, hhash->Init.KeySize);
1641 __HAL_HASH_START_DIGEST();
1654 hhash->State = HAL_HASH_STATE_TIMEOUT;
1664 HASH_GetDigest(pOutBuffer, 20);
1667 hhash->State = HAL_HASH_STATE_READY;
1706 HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
1708 uint32_t inputaddr = 0;
1714 hhash->State = HAL_HASH_STATE_BUSY;
1717 hhash->pHashInBuffPtr = pInBuffer;
1718 hhash->HashBuffSize = Size;
1719 hhash->HashInCount = 0;
1722 if(hhash->Phase == HAL_HASH_PHASE_READY)
1725 if(hhash->Init.KeySize > 64)
1728 HASH->CR |= (HASH_ALGOSELECTION_MD5 | HASH_ALGOMODE_HMAC | HASH_HMAC_KEYTYPE_LONGKEY |
HASH_CR_INIT);
1738 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1741 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1744 inputaddr = (uint32_t)(hhash->Init.pKey);
1747 hhash->hdmain->XferCpltCallback = HASH_DMAXferCplt;
1749 hhash->hdmain->XferErrorCallback = HASH_DMAError;
1752 HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&
HASH->DIN, (hhash->Init.KeySize%4 ? (hhash->Init.KeySize+3)/4:hhash->Init.KeySize/4));
1773 HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size)
1775 uint32_t inputaddr = 0;
1781 hhash->State = HAL_HASH_STATE_BUSY;
1784 hhash->pHashInBuffPtr = pInBuffer;
1785 hhash->HashBuffSize = Size;
1786 hhash->HashInCount = 0;
1789 if(hhash->Phase == HAL_HASH_PHASE_READY)
1792 if(hhash->Init.KeySize > 64)
1795 HASH->CR |= (HASH_ALGOSELECTION_SHA1 | HASH_ALGOMODE_HMAC | HASH_HMAC_KEYTYPE_LONGKEY |
HASH_CR_INIT);
1805 hhash->Phase = HAL_HASH_PHASE_PROCESS;
1808 __HAL_HASH_SET_NBVALIDBITS(hhash->Init.KeySize);
1811 inputaddr = (uint32_t)(hhash->Init.pKey);
1814 hhash->hdmain->XferCpltCallback = HASH_DMAXferCplt;
1816 hhash->hdmain->XferErrorCallback = HASH_DMAError;
1819 HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&
HASH->DIN, (hhash->Init.KeySize%4 ? (hhash->Init.KeySize+3)/4:hhash->Init.KeySize/4));
1854 HAL_HASH_StateTypeDef HAL_HASH_GetState(HASH_HandleTypeDef *hhash)
1856 return hhash->State;
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define assert_param(expr)
Include module's header file.
#define __HAL_UNLOCK(__HANDLE__)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
#define __HAL_LOCK(__HANDLE__)
This file contains all the functions prototypes for the HAL module driver.
#define HAL_IS_BIT_CLR(REG, BIT)
#define HAL_IS_BIT_SET(REG, BIT)
DMA handle Structure definition.
#define __REV
Reverse byte order (32 bit)
HAL_StatusTypeDef
HAL Status structures definition.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.