318 lines
8.6 KiB
C
318 lines
8.6 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_aes.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief AES STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩAES<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_AES_H
|
|||
|
#define CIU32L051_STD_AES_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup AES AES
|
|||
|
* @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"
|
|||
|
|
|||
|
/*-----------------------------------------type define------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup AES_Types AES Types
|
|||
|
* @brief AES<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief AES<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<EFBFBD>嶨<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint32_t mode; /**< <20>ӽ<EFBFBD><D3BD><EFBFBD>ģʽѡ<CABD><D1A1>
|
|||
|
@arg AES_MODE_DEC... */
|
|||
|
uint32_t swapped_data_type; /**< <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>ֱ<EFBFBD>Ϊ<EFBFBD><EFBFBD><DEBD><EFBFBD>/16λ/8λ/1λ<31><CEBB><EFBFBD><EFBFBD>
|
|||
|
@arg AES_SWAPPED_DATA_NONE... */
|
|||
|
} std_aes_init_t;
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*--------------------------------------------define--------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup AES_Constants AES Constants
|
|||
|
* @brief AES<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/* <20>ӽ<EFBFBD><D3BD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD> */
|
|||
|
#define AES_MODE_ENC AES_CR_MOD_SEL_ENC /**< <20><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
#define AES_MODE_DEC AES_CR_MOD_SEL_DEC /**< <20><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
|
|||
|
/* <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define AES_SWAPPED_DATA_NONE AES_CR_DATA_TYPE_NONE /**< <20><EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define AES_SWAPPED_DATA_16BIT AES_CR_DATA_TYPE_16BIT /**< 16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> */
|
|||
|
#define AES_SWAPPED_DATA_8BIT AES_CR_DATA_TYPE_8BIT /**< 8λ<38><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>ֽڽ<D6BD><DABD><EFBFBD> */
|
|||
|
#define AES_SWAPPED_DATA_1BIT AES_CR_DATA_TYPE_BIT /**< 1λ<31><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>ݰ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/* <20>ж<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */
|
|||
|
#define AES_INTERRUPT_COMPLETE AES_CSR_CCIE /**< <20>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
/* ״̬<D7B4><CCAC>־ */
|
|||
|
#define AES_FLAG_COMPLETE AES_CSR_DONE /**< <20>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־ */
|
|||
|
#define AES_FLAG_BUSY AES_CSR_BUSY /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD>־ */
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
#define AES_CLEAR_FLAG_COMPLETE AES_CSR_CCFC /**< <20>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup AES_External_Functions AES External Functions
|
|||
|
* @brief AES<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>üӽ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @param mode <EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg AES_MODE_ENC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg AES_MODE_DEC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_set_cryption_mode(uint32_t mode)
|
|||
|
{
|
|||
|
MODIFY_REG(AES->CR, AES_CR_MOD_SEL, mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ؼӽ<EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_MODE_ENC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
* @arg AES_MODE_DEC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_aes_get_cryption_mode(void)
|
|||
|
{
|
|||
|
return (AES->CR & AES_CR_MOD_SEL);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param data_type <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_NONE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_16BIT<EFBFBD><EFBFBD>16λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_8BIT<EFBFBD><EFBFBD> 8λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD>ֽڽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_1BIT<EFBFBD><EFBFBD> 1λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_set_data_type(uint32_t data_type)
|
|||
|
{
|
|||
|
MODIFY_REG(AES->CR, AES_CR_DATA_TYPE, data_type);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_NONE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_16BIT<EFBFBD><EFBFBD> 16λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_8BIT<EFBFBD><EFBFBD> 8λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD>ֽڽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg AES_SWAPPED_DATA_1BIT<EFBFBD><EFBFBD> 1λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_aes_get_data_type(void)
|
|||
|
{
|
|||
|
return (AES->CR & AES_CR_DATA_TYPE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡAES<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>״̬
|
|||
|
* @param flag <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ״̬<EFBFBD>ı<EFBFBD>־
|
|||
|
* @arg AES_FLAG_COMPLETE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
|||
|
* @arg AES_FLAG_BUSY<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>־
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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_aes_get_flag(uint32_t flag)
|
|||
|
{
|
|||
|
return ((AES->CSR & (flag)) == (flag));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>AES״̬<EFBFBD><EFBFBD>־λ
|
|||
|
* @param flag <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>־
|
|||
|
* @arg AES_CLEAR_FLAG_COMPLETE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_clear_flag(uint32_t flag)
|
|||
|
{
|
|||
|
MODIFY_REG(AES->CSR, AES_CSR_CCFC, flag);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_dmain_enable(void)
|
|||
|
{
|
|||
|
AES->CSR |= AES_CSR_DMAIN_EN;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹDMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_dmain_disable(void)
|
|||
|
{
|
|||
|
AES->CSR &= (~AES_CSR_DMAIN_EN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_dmaout_enable(void)
|
|||
|
{
|
|||
|
AES->CSR |= AES_CSR_DMAOUT_EN;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹDMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_dmaout_disable(void)
|
|||
|
{
|
|||
|
AES->CSR &= (~AES_CSR_DMAOUT_EN);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>AES<EFBFBD>ж<EFBFBD>
|
|||
|
* @param interrupt AES<EFBFBD>ж<EFBFBD>Դ
|
|||
|
* @arg AES_INTERRUPT_COMPLETE<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_enable_interrupt(uint32_t interrupt)
|
|||
|
{
|
|||
|
AES->CSR |= (interrupt);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹAES<EFBFBD>ж<EFBFBD>
|
|||
|
* @param interrupt AES<EFBFBD>ж<EFBFBD>Դ
|
|||
|
* @arg AES_INTERRUPT_COMPLETE<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_disable_interrupt(uint32_t interrupt)
|
|||
|
{
|
|||
|
AES->CSR &= (~(interrupt));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD>㷨<EFBFBD>ж<EFBFBD>ʹ<EFBFBD>ܵ<EFBFBD>״̬
|
|||
|
* @param interrupt AES<EFBFBD>ж<EFBFBD>Դ
|
|||
|
* @arg AES_INTERRUPT_COMPLETE<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg true<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
* @arg false<EFBFBD><EFBFBD>δʹ<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_aes_get_interrupt_enable(uint32_t interrupt)
|
|||
|
{
|
|||
|
return ((AES->CSR & (interrupt)) == (interrupt));
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|||
|
* @param p_key ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
* @note <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_write_key(uint32_t *p_key)
|
|||
|
{
|
|||
|
AES->KEYR[3] = p_key[0];
|
|||
|
AES->KEYR[2] = p_key[1];
|
|||
|
AES->KEYR[1] = p_key[2];
|
|||
|
AES->KEYR[0] = p_key[3];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param p_data ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
* @note <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>Ϊ4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_write_data(uint32_t *p_data)
|
|||
|
{
|
|||
|
AES->DR = p_data[0];
|
|||
|
AES->DR = p_data[1];
|
|||
|
AES->DR = p_data[2];
|
|||
|
AES->DR = p_data[3];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param p_data ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
* @note <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>Ϊ4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_aes_read_data(uint32_t *p_data)
|
|||
|
{
|
|||
|
p_data[0] = AES->DR;
|
|||
|
p_data[1] = AES->DR;
|
|||
|
p_data[2] = AES->DR;
|
|||
|
p_data[3] = AES->DR;
|
|||
|
}
|
|||
|
|
|||
|
void std_aes_init(std_aes_init_t *aes_init_param);
|
|||
|
void std_aes_deinit(void);
|
|||
|
void std_aes_struct_init(std_aes_init_t *aes_init_struct);
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_AES_H */
|