1 /******************************************************************************************************************************************
2 * 文件名称: SWM320_crc.c
3 * 功能说明: SWM320单片机的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 "SWM320.h"
22 #include "SWM320_crc.h"
23
24
25 /******************************************************************************************************************************************
26 * 函数名称: CRC_Init()
27 * 功能说明: CRC 初始化
28 * 输 入: CRC_TypeDef * CRCx 指定要被设置的CRC接口,有效值包括CRC
29 * uint32_t mode 工作模式,有效值有:CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
30 * uint32_t out_not 输出结果是否取反
31 * uint32_t out_rev 输出结果是否翻转
32 * uint32_t ini_val CRC初始值
33 * 输 出: 无
34 * 注意事项: 无
35 ******************************************************************************************************************************************/
CRC_Init(CRC_TypeDef * CRCx,uint32_t mode,uint32_t out_not,uint32_t out_rev,uint32_t ini_val)36 void CRC_Init(CRC_TypeDef * CRCx, uint32_t mode, uint32_t out_not, uint32_t out_rev, uint32_t ini_val)
37 {
38 switch((uint32_t)CRCx)
39 {
40 case ((uint32_t)CRC):
41 SYS->CLKEN |= (0x01 << SYS_CLKEN_CRC_Pos);
42 break;
43 }
44
45 CRCx->CR = (1 << CRC_CR_EN_Pos) |
46 (mode << CRC_CR_CRC16_Pos) |
47 (out_not << CRC_CR_ONOT_Pos) |
48 (out_rev << CRC_CR_OREV_Pos);
49
50 CRCx->INIVAL = ini_val;
51 }
52