CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_trng.h

149 lines
3.6 KiB
C
Raw Permalink Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_trng.h
* @author MCU Ecosystem Development Team
* @brief TRNG STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>TRNG<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
*
**************************************************************************************************
*/
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
#ifndef CIU32L051_STD_TRNG_H
#define CIU32L051_STD_TRNG_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup TRNG TRNG
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------includes--------------------------------------------------*/
#include "ciu32l051_std_common.h"
/*------------------------------------define----------------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup TRNG_Constants TRNG Constants
* @brief TRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
#define TRNG_TRUE_RANDOM TRNG_CR1_TYPE_SEL_TRUE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define TRNG_PSEUDO_RANDOM TRNG_CR1_TYPE_SEL_PSEUDO /**< α<><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup TRNG_External_Functions TRNG External Functions
* @brief TRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg TRNG_TRUE_RANDOM<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg TRNG_PSEUDO_RANDOM: α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_trng_set_mode(uint32_t mode)
{
MODIFY_REG(TRNG->CR1, TRNG_CR1_TYPE_SEL, mode);
}
/**
* @brief <EFBFBD><EFBFBD>ȡTRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־״̬
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־״̬
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
*/
__STATIC_INLINE bool std_trng_get_flag_ready(void)
{
return ((TRNG ->SR & TRNG_SR_RDY) == TRNG_SR_RDY);
}
/**
* @brief ʹ<EFBFBD><EFBFBD>TRNG<EFBFBD>ж<EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_trng_interrupt_enable(void)
{
TRNG->CR1 |= TRNG_CR1_RDYIE;
}
/**
* @brief <EFBFBD><EFBFBD>ֹTRNG<EFBFBD>ж<EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_trng_interrupt_disable(void)
{
TRNG->CR1 &= (~TRNG_CR1_RDYIE);
}
/**
* @brief <EFBFBD><EFBFBD>ȡTRNG<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
* @retval bool TRNG<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD>δʹ<EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_trng_get_interrupt_enable(void)
{
return ((TRNG->CR1 & TRNG_CR1_RDYIE) == TRNG_CR1_RDYIE);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t 32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_trng_read_data(void)
{
return (TRNG->DR);
}
void std_trng_deinit(void);
std_status_t std_trng_get_random_number(uint32_t *rng_data32);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
/**
* @}
*/
/**
* @}
*/
#endif /* CIU32L051_STD_TRNG_H */