--- /dev/null
+/**************************************************************************//**\r
+ * @file crc.h\r
+ * @version V3.00\r
+ * @brief Cyclic Redundancy Check(CRC) driver header file\r
+ *\r
+ * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.\r
+ *****************************************************************************/\r
+#ifndef __CRC_H__\r
+#define __CRC_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+\r
+/** @addtogroup Standard_Driver Standard Driver\r
+ @{\r
+*/\r
+\r
+/** @addtogroup CRC_Driver CRC Driver\r
+ @{\r
+*/\r
+\r
+/** @addtogroup CRC_EXPORTED_CONSTANTS CRC Exported Constants\r
+ @{\r
+*/\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+/* CRC Polynomial Mode Constant Definitions */\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+#define CRC_CCITT (0UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CCITT \hideinitializer */\r
+#define CRC_8 (1UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC8 \hideinitializer */\r
+#define CRC_16 (2UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC16 \hideinitializer */\r
+#define CRC_32 (3UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC32 \hideinitializer */\r
+\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+/* Checksum, Write data Constant Definitions */\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+#define CRC_CHECKSUM_COM (CRC_CTL_CHKSFMT_Msk) /*!<CRC Checksum Complement \hideinitializer */\r
+#define CRC_CHECKSUM_RVS (CRC_CTL_CHKSREV_Msk) /*!<CRC Checksum Reverse \hideinitializer */\r
+#define CRC_WDATA_COM (CRC_CTL_DATFMT_Msk) /*!<CRC Write Data Complement \hideinitializer */\r
+#define CRC_WDATA_RVS (CRC_CTL_DATREV_Msk) /*!<CRC Write Data Reverse \hideinitializer */\r
+\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+/* CPU Write Data Length Constant Definitions */\r
+/*---------------------------------------------------------------------------------------------------------*/\r
+#define CRC_CPU_WDATA_8 (0UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 8-bit \hideinitializer */\r
+#define CRC_CPU_WDATA_16 (1UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 16-bit \hideinitializer */\r
+#define CRC_CPU_WDATA_32 (2UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 32-bit \hideinitializer */\r
+\r
+/*@}*/ /* end of group CRC_EXPORTED_CONSTANTS */\r
+\r
+\r
+/** @addtogroup CRC_EXPORTED_FUNCTIONS CRC Exported Functions\r
+ @{\r
+*/\r
+\r
+/**\r
+ * @brief Set CRC Seed Value\r
+ *\r
+ * @param[in] crc The pointer of CRC module.\r
+ * @param[in] u32Seed Seed value\r
+ *\r
+ * @return None\r
+ *\r
+ * @details This macro is used to set CRC seed value.\r
+ *\r
+ * @note User must to perform CRC_CHKSINIT(CRC_CTL[1] CRC Engine Reset) to reload the new seed value\r
+ * to CRC controller.\r
+ * \hideinitializer\r
+ */\r
+#define CRC_SET_SEED(crc, u32Seed) do{ (crc)->SEED = (u32Seed); (crc)->CTL |= CRC_CTL_CHKSINIT_Msk; }while(0)\r
+\r
+/**\r
+ * @brief Get CRC Seed Value\r
+ *\r
+ * @param[in] crc The pointer of CRC module.\r
+ *\r
+ * @return CRC seed value\r
+ *\r
+ * @details This macro gets the current CRC seed value.\r
+ * \hideinitializer\r
+ */\r
+#define CRC_GET_SEED(crc) ((crc)->SEED)\r
+\r
+/**\r
+ * @brief CRC Write Data\r
+ *\r
+ * @param[in] crc The pointer of CRC module.\r
+ * @param[in] u32Data Write data\r
+ *\r
+ * @return None\r
+ *\r
+ * @details User can write data directly to CRC Write Data Register(CRC_DAT) by this macro to perform CRC operation.\r
+ * \hideinitializer\r
+ */\r
+#define CRC_WRITE_DATA(crc, u32Data) ((crc)->DAT = (u32Data))\r
+\r
+\r
+void CRC_Open(uint32_t u32Mode, uint32_t u32Attribute, uint32_t u32Seed, uint32_t u32DataLen);\r
+uint32_t CRC_GetChecksum(void);\r
+\r
+/*@}*/ /* end of group CRC_EXPORTED_FUNCTIONS */\r
+\r
+/*@}*/ /* end of group CRC_Driver */\r
+\r
+/*@}*/ /* end of group Standard_Driver */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __CRC_H__ */\r
+\r
+/*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/\r