123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /*
- ******************************************************************************
- * @file HAL_CRC.h
- * @version V1.0.0
- * @date 2021
- * @brief Header file of CRC HAL module.
- ******************************************************************************
- */
- #ifndef __HAL_CRC_H__
- #define __HAL_CRC_H__
- #include "ACM32Fxx_HAL.h"
- /** @defgroup CRC POLY Reverse
- * @{
- */
- #define CRC_POLY_REV_EN (0x00000400U) /*!< Poly Reverse Enable */
- #define CRC_POLY_REV_DIS (0x00000000U) /*!< Poly Reverse Disable */
- /**
- * @}
- */
- /** @defgroup CRC OUTXOR Reverse
- * @{
- */
- #define CRC_OUTXOR_REV_EN (0x00000200U) /*!< OUTXOR Reverse Enable */
- #define CRC_OUTXOR_REV_DIS (0x00000000U) /*!< OUTXOR Reverse Disable */
- /**
- * @}
- */
-
- /** @defgroup CRC INIT Reverse
- * @{
- */
- #define CRC_INIT_REV_EN (0x00000100U) /*!< INIT Reverse Enable */
- #define CRC_INIT_REV_DIS (0x00000000U) /*!< INIT Reverse Disable */
- /**
- * @}
- */
-
- /** @defgroup CRC RSLT Reverse
- * @{
- */
- #define CRC_RSLT_REV_EN (0x00000080U) /*!< RSLT Reverse Enable */
- #define CRC_RSLT_REV_DIS (0x00000000U) /*!< RSLT Reverse Disable */
- /**
- * @}
- */
- /** @defgroup CRC DATA Reverse
- * @{
- */
- #define CRC_DATA_REV_DISABLE (0x00000000U) /*!< DATA Reverse Disable */
- #define CRC_DATA_REV_BY_BYTE (0x00000020U) /*!< DATA Reverse By Byte */
- #define CRC_DATA_REV_BY_HALFWORD (0x00000040U) /*!< DATA Reverse By HalfWord */
- #define CRC_DATA_REV_BY_WORD (0x00000060U) /*!< DATA Reverse By Word */
- /**
- * @}
- */
- /** @defgroup CRC Poly Len
- * @{
- */
- #define CRC_POLTY_LEN_32 (0x00000000U) /*!< POLY len = 32bit */
- #define CRC_POLTY_LEN_16 (0x00000008U) /*!< POLY len = 16bit */
- #define CRC_POLTY_LEN_8 (0x00000010U) /*!< POLY len = 8bit */
- #define CRC_POLTY_LEN_7 (0x00000018U) /*!< POLY len = 7bit */
- /**
- * @}
- */
- /** @defgroup CRC Data Len
- * @{
- */
- #define CRC_DATA_LEN_1B (0x00000000U) /*!< DATA len = 1 Byte */
- #define CRC_DATA_LEN_2B (0x00000002U) /*!< DATA len = 2 Byte */
- #define CRC_DATA_LEN_3B (0x00000004U) /*!< DATA len = 3 Byte */
- #define CRC_DATA_LEN_4B (0x00000006U) /*!< DATA len = 4 Byte */
- /**
- * @}
- */
- /** @defgroup CRC RST
- * @{
- */
- #define CRC_RST_EN (0x00000001U) /*!< RST CRC_DATA To CRC_INIT */
- #define CRC_RST_DIS (0x00000000U) /*!< RST CRC_DATA To CRC_INIT */
- /**
- * @}
- */
-
- /*
- * @brief CRC Init Structure definition
- */
- typedef struct
- {
- uint32_t PolyRev; /*!< Specifies if the Poly is reversed in CRC
- This parameter can be a value of @ref CRC POLY Reverse. */
- uint32_t OutxorRev; /*!< Specifies if the Outxor is reversed in CRC
- This parameter can be a value of @ref CRC OUTXOR Reverse. */
- uint32_t InitRev; /*!< Specifies if the Init is reversed in CRC
- This parameter can be a value of @ref CRC INIT Reverse. */
- uint32_t RsltRev; /*!< Specifies if the Result is reversed in CRC
- This parameter can be a value of @ref CRC RSLT Reverse. */
- uint32_t DataRev; /*!< Specifies if the Data is reversed in CRC
- This parameter can be a value of @ref CRC DATA Reverse. */
- uint32_t PolyLen; /*!< Specifies the Poly Len in CRC
- This parameter can be a value of @ref CRC Poly Len. */
- uint32_t DataLen; /*!< Specifies the Data Len in CRC
- This parameter can be a value of @ref CRC Data Len. */
- uint32_t RST; /*!< Specifies if CRC is reset
- This parameter can be a value of @ref CRC RST. */
-
- uint32_t InitData; /*!< This member configures the InitData. */
-
- uint32_t OutXorData; /*!< This member configures the OutXorData. */
-
- uint32_t PolyData; /*!< This member configures the PolyData. */
-
- uint32_t FData; /*!< This member configures the FData. */
-
- }CRC_InitTypeDef;
- /*
- * @brief UART handle Structure definition
- */
- typedef struct
- {
- CRC_TypeDef *Instance; /*!< CRC registers base address */
- CRC_InitTypeDef Init; /*!< CRC calculate parameters */
-
- uint8_t* CRC_Data_Buff; /*!< CRC databuff base address */
-
- uint32_t CRC_Data_Len; /*!< amount of CRC data to be calculated */
-
- }CRC_HandleTypeDef;
-
-
- /*********************************************************************************
- * Function : HAL_CRC_Calculate
- * Description : Calculate the crc calue of input data.
- * Input : hcrc: CRC handle.
- * Output : CRC value
- * Author : cl Data : 2021
- **********************************************************************************/
- uint32_t HAL_CRC_Calculate(CRC_HandleTypeDef *hcrc);
- #endif
|