97 lines
3.1 KiB
C
97 lines
3.1 KiB
C
/***************************************************************
|
||
*Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
|
||
*文件名:
|
||
*作 者: Liut
|
||
*版 本: V1.00
|
||
*日 期: 2017/07/14
|
||
*描 述:
|
||
*备 注: 适用于 ES8P508x芯片
|
||
本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
|
||
***************************************************************/
|
||
#include "lib_crc.h"
|
||
|
||
/***************************************************************
|
||
函数名:CRC_getTypeValue
|
||
描 述:配置并返回一个CRC_CON配置参数
|
||
输入值:con_value CRC_CON 数据配置值结构体
|
||
返回值:CRC_CON配置值
|
||
***************************************************************/
|
||
uint32_t CRC_getTypeValue(CRC_CONValueStruType con_value)
|
||
{
|
||
uint32_t type =0;
|
||
type = (con_value.xorout | con_value.refout | con_value.refin |\
|
||
con_value.mode|con_value.hs_type|con_value.init_data_type);
|
||
return type;
|
||
}
|
||
|
||
/***************************************************************
|
||
函数名:CRC_EmptayCheck
|
||
描 述:查空函数
|
||
输入值:address: 查空区域首地址, data_len:查空区域字节长度
|
||
返回值:1:成功,0 :失败
|
||
***************************************************************/
|
||
uint32_t CRC_EmptayCheck(void* address, uint32_t data_len)
|
||
{
|
||
CRC_EM CRC_EmptayCheck = (CRC_EM)(*(uint32_t *)CRC_EmptayCheck_addr);
|
||
|
||
uint32_t result;
|
||
__ASM("CPSID i");
|
||
result = (*CRC_EmptayCheck)(address, data_len);
|
||
__ASM("CPSIE i");
|
||
return result;
|
||
}
|
||
|
||
/***************************************************************
|
||
函数名:CRC_FlashVerify
|
||
描 述:FLASH校验函数
|
||
输入值:address: 校验区域首地址, data_len:校验区域字节长度, type:校验方式配置
|
||
返回值:CRC校验码
|
||
***************************************************************/
|
||
uint32_t CRC_FlashVerify(void* address, uint32_t data_len, uint32_t type)
|
||
{
|
||
CRC_FL CRC_FlashVerify = (CRC_FL)(*(uint32_t *)CRC_FlashVerify_addr);
|
||
|
||
uint32_t result;
|
||
__ASM("CPSID i");
|
||
result = (*CRC_FlashVerify)(address, data_len, type);
|
||
__ASM("CPSIE i");
|
||
return result;
|
||
}
|
||
|
||
/***************************************************************
|
||
函数名:CRC_UserCal
|
||
描 述:用户数据校验函数
|
||
输入值:address: 用户校验数据首地址, data_len:校验区域字节长度, type:校验方式配置
|
||
返回值:CRC校验码
|
||
***************************************************************/
|
||
uint32_t CRC_UserCal(void* address, uint32_t data_len, uint32_t type)
|
||
{
|
||
CRC_US CRC_UserCal = (CRC_US)(*(uint32_t *)CRC_UserCal_addr);
|
||
|
||
uint32_t result;
|
||
__ASM("CPSID i");
|
||
result = (*CRC_UserCal)(address, data_len, type);
|
||
__ASM("CPSIE i");
|
||
return result;
|
||
}
|
||
|
||
/***************************************************************
|
||
函数名:CRC_CheckReset
|
||
描 述:CRC复位查询函数
|
||
输入值:无
|
||
返回值:复位标志,1:有复位标志,0:无复位标志
|
||
***************************************************************/
|
||
uint32_t CRC_CheckReset(void)
|
||
{
|
||
CRC_CH CRC_CheckReset = (CRC_CH)(*(uint32_t *)CRC_CheckReset_addr);
|
||
|
||
uint32_t result;
|
||
__ASM("CPSID i");
|
||
result = (*CRC_CheckReset)();
|
||
__ASM("CPSIE i");
|
||
return result;
|
||
}
|
||
|
||
/************************END OF FILE**************************/
|
||
|