rt-thread-official/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Src/hal_crc.c

109 lines
3.6 KiB
C

////////////////////////////////////////////////////////////////////////////////
/// @file hal_crc.c
/// @author AE TEAM
/// @brief THIS FILE PROVIDES ALL THE CRC FIRMWARE FUNCTIONS.
////////////////////////////////////////////////////////////////////////////////
/// @attention
///
/// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
/// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
/// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
/// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
/// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
/// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
///
/// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
////////////////////////////////////////////////////////////////////////////////
// Define to prevent recursive inclusion
#define _HAL_CRC_C_
// Files includes
#include "hal_crc.h"
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup MM32_Hardware_Abstract_Layer
/// @{
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup CRC_HAL
/// @{
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup CRC_Exported_Functions
/// @{
////////////////////////////////////////////////////////////////////////////////
/// @brief Resets the CRC Data register (DR).
/// @param None.
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void CRC_ResetDR()
{
CRC->CR = CRC_CR_RESET;
}
//#pragma optimize(0)
////////////////////////////////////////////////////////////////////////////////
/// @brief Computes the 32-bit CRC of a given data word(32-bit).
/// @param Data: data word(32-bit) to compute its CRC
/// @retval 32-bit CRC
////////////////////////////////////////////////////////////////////////////////
u32 CRC_CalcCRC(u32 data)
{
CRC->DR = data;
return (CRC->DR);
}
////////////////////////////////////////////////////////////////////////////////
/// @brief Computes the 32-bit CRC of a given buffer of data word(32-bit).
/// @param buffer: pointer to the buffer containing the data to be computed
/// @param length: length of the buffer to be computed
/// @retval 32-bit CRC
////////////////////////////////////////////////////////////////////////////////
u32 CRC_CalcBlockCRC(u32* buffer, u32 length)
{
u32 i;
for (i = 0; i < length; i++) {
CRC->DR = buffer[i];
}
return (CRC->DR);
}
////////////////////////////////////////////////////////////////////////////////
/// @brief Returns the current CRC value.
/// @param None.
/// @retval 32-bit CRC
////////////////////////////////////////////////////////////////////////////////
u32 CRC_GetCRC(void)
{
return (CRC->DR);
}
////////////////////////////////////////////////////////////////////////////////
/// @brief Stores a 8-bit data in the Independent Data(ID) register.
/// @param id_value: 8-bit value to be stored in the ID register
/// @retval None.
////////////////////////////////////////////////////////////////////////////////
void CRC_SetIDRegister(u8 id_value)
{
CRC->IDR = id_value;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief Returns the 8-bit data stored in the Independent Data(ID) register
/// @param None.
/// @retval 8-bit value of the ID register
////////////////////////////////////////////////////////////////////////////////
u8 CRC_GetIDRegister()
{
return (CRC->IDR);
}
/// @}
/// @}
/// @}