1 /****************************************************************************************************************************************** 2 * 文件名称: SWM341_crc.c 3 * 功能说明: SWM341单片机的CRC模块驱动库 4 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1 5 * 注意事项: 6 * 版本日期: V1.1.0 2017年10月25日 7 * 升级记录: 8 * 9 * 10 ******************************************************************************************************************************************* 11 * @attention 12 * 13 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 14 * REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 15 * FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 16 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN- 17 * -ECTION WITH THEIR PRODUCTS. 18 * 19 * COPYRIGHT 2012 Synwit Technology 20 *******************************************************************************************************************************************/ 21 #include "SWM341.h" 22 #include "SWM341_crc.h" 23 24 25 /****************************************************************************************************************************************** 26 * 函数名称: CRC_Init() 27 * 功能说明: CRC 初始化 28 * 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口,有效值包括CRC 29 * CRC_InitStructure * initStruct 包含CRC相关设定值的结构体 30 * 输 出: 无 31 * 注意事项: 无 32 ******************************************************************************************************************************************/ CRC_Init(CRC_TypeDef * CRCx,CRC_InitStructure * initStruct)33void CRC_Init(CRC_TypeDef * CRCx, CRC_InitStructure * initStruct) 34 { 35 switch((uint32_t)CRCx) 36 { 37 case ((uint32_t)CRC): 38 SYS->CLKEN0 |= (0x01 << SYS_CLKEN0_CRC_Pos); 39 break; 40 } 41 42 CRCx->INIVAL = initStruct->init_crc; 43 44 CRCx->CR = (1 << CRC_CR_EN_Pos) | 45 (initStruct->Poly << CRC_CR_POLY_Pos) | 46 (initStruct->in_width << CRC_CR_IBIT_Pos) | 47 (initStruct->in_rev << CRC_CR_IREV_Pos) | 48 (initStruct->in_not << CRC_CR_INOT_Pos) | 49 (initStruct->out_rev << CRC_CR_OREV_Pos) | 50 (initStruct->out_not << CRC_CR_ONOT_Pos); 51 } 52 53 54 /****************************************************************************************************************************************** 55 * 函数名称: CRC_SetInitVal() 56 * 功能说明: 设置CRC计算初始值 57 * 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口,有效值包括CRC 58 * uint32_t init_crc CRC计算初始值 59 * 输 出: 无 60 * 注意事项: 无 61 ******************************************************************************************************************************************/ CRC_SetInitVal(CRC_TypeDef * CRCx,uint32_t init_crc)62void CRC_SetInitVal(CRC_TypeDef * CRCx, uint32_t init_crc) 63 { 64 CRCx->INIVAL = init_crc; 65 66 CRCx->CR |= (1 << CRC_CR_EN_Pos); 67 } 68