⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f2xx_cryp.c

📁 STM32+Grlib
💻 C
📖 第 1 页 / 共 3 页
字号:
  CRYP->IV0RR = CRYP_ContextRestore->CRYP_IV0RR;
  CRYP->IV1LR = CRYP_ContextRestore->CRYP_IV1LR;
  CRYP->IV1RR = CRYP_ContextRestore->CRYP_IV1RR;

  /* Enable the cryptographic processor */
  CRYP->CR |= CRYP_CR_CRYPEN;
}
/**
  * @}
  */

/** @defgroup CRYP_Group4 CRYP's DMA interface Configuration function
 *  @brief   CRYP's DMA interface Configuration function 
 *
@verbatim   
 ===============================================================================
                   CRYP's DMA interface Configuration function
 ===============================================================================  

  This section provides functions allowing to configure the DMA interface for 
  CRYP data input and output transfer.
   
  When the DMA mode is enabled (using the CRYP_DMACmd() function), data can be 
  transferred:
  - From memory to the CRYP IN FIFO using the DMA peripheral by enabling 
    the CRYP_DMAReq_DataIN request.
  - From the CRYP OUT FIFO to the memory using the DMA peripheral by enabling 
    the CRYP_DMAReq_DataOUT request.

@endverbatim
  * @{
  */

/**
  * @brief  Enables or disables the CRYP DMA interface.
  * @param  CRYP_DMAReq: specifies the CRYP DMA transfer request to be enabled or disabled.
  *           This parameter can be any combination of the following values:
  *            @arg CRYP_DMAReq_DataOUT: DMA for outgoing(Tx) data transfer
  *            @arg CRYP_DMAReq_DataIN: DMA for incoming(Rx) data transfer
  * @param  NewState: new state of the selected CRYP DMA transfer request.
  *          This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void CRYP_DMACmd(uint8_t CRYP_DMAReq, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_CRYP_DMAREQ(CRYP_DMAReq));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected CRYP DMA request */
    CRYP->DMACR |= CRYP_DMAReq;
  }
  else
  {
    /* Disable the selected CRYP DMA request */
    CRYP->DMACR &= (uint8_t)~CRYP_DMAReq;
  }
}
/**
  * @}
  */

/** @defgroup CRYP_Group5 Interrupts and flags management functions
 *  @brief   Interrupts and flags management functions
 *
@verbatim   
 ===============================================================================
                   Interrupts and flags management functions
 ===============================================================================  

  This section provides functions allowing to configure the CRYP Interrupts and 
  to get the status and Interrupts pending bits.

  The CRYP provides 2 Interrupts sources and 7 Flags:

  Flags :
  ------- 
                          
     1. CRYP_FLAG_IFEM :  Set when Input FIFO is empty.
                          This Flag is cleared only by hardware.
      
     2. CRYP_FLAG_IFNF :  Set when Input FIFO is not full.
                          This Flag is cleared only by hardware.


     3. CRYP_FLAG_INRIS  : Set when Input FIFO Raw interrupt is pending 
                           it gives the raw interrupt state prior to masking 
                           of the input FIFO service interrupt.
                           This Flag is cleared only by hardware.
     
     4. CRYP_FLAG_OFNE   : Set when Output FIFO not empty.
                           This Flag is cleared only by hardware.
        
     5. CRYP_FLAG_OFFU   : Set when Output FIFO is full.
                           This Flag is cleared only by hardware.
                           
     6. CRYP_FLAG_OUTRIS : Set when Output FIFO Raw interrupt is pending 
                           it gives the raw interrupt state prior to masking 
                           of the output FIFO service interrupt.
                           This Flag is cleared only by hardware.
                               
     7. CRYP_FLAG_BUSY   : Set when the CRYP core is currently processing a 
                           block of data or a key preparation (for AES 
                           decryption).
                           This Flag is cleared only by hardware.
                           To clear it, the CRYP core must be disabled and the 
                           last processing has completed. 

  Interrupts :
  ------------

   1. CRYP_IT_INI   : The input FIFO service interrupt is asserted when there 
                      are less than 4 words in the input FIFO.
                      This interrupt is associated to CRYP_FLAG_INRIS flag.

                @note This interrupt is cleared by performing write operations 
                      to the input FIFO until it holds 4 or more words. The 
                      input FIFO service interrupt INMIS is enabled with the 
                      CRYP enable bit. Consequently, when CRYP is disabled, the 
                      INMIS signal is low even if the input FIFO is empty.



   2. CRYP_IT_OUTI  : The output FIFO service interrupt is asserted when there 
                      is one or more (32-bit word) data items in the output FIFO.
                      This interrupt is associated to CRYP_FLAG_OUTRIS flag.

                @note This interrupt is cleared by reading data from the output 
                      FIFO until there is no valid (32-bit) word left (that is, 
                      the interrupt follows the state of the OFNE (output FIFO 
                      not empty) flag).


  Managing the CRYP controller events :
  ------------------------------------ 
  The user should identify which mode will be used in his application to manage 
  the CRYP controller events: Polling mode or Interrupt mode.

  1.  In the Polling Mode it is advised to use the following functions:
      - CRYP_GetFlagStatus() : to check if flags events occur. 

  @note  The CRYPT flags do not need to be cleared since they are cleared as 
         soon as the associated event are reset.   


  2.  In the Interrupt Mode it is advised to use the following functions:
      - CRYP_ITConfig()       : to enable or disable the interrupt source.
      - CRYP_GetITStatus()    : to check if Interrupt occurs.

  @note  The CRYPT interrupts have no pending bits, the interrupt is cleared as 
         soon as the associated event is reset. 

@endverbatim
  * @{
  */ 

/**
  * @brief  Enables or disables the specified CRYP interrupts.
  * @param  CRYP_IT: specifies the CRYP interrupt source to be enabled or disabled.
  *          This parameter can be any combination of the following values:
  *            @arg CRYP_IT_INI: Input FIFO interrupt
  *            @arg CRYP_IT_OUTI: Output FIFO interrupt
  * @param  NewState: new state of the specified CRYP interrupt.
  *           This parameter can be: ENABLE or DISABLE.
  * @retval None
  */
void CRYP_ITConfig(uint8_t CRYP_IT, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_CRYP_CONFIG_IT(CRYP_IT));
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    /* Enable the selected CRYP interrupt */
    CRYP->IMSCR |= CRYP_IT;
  }
  else
  {
    /* Disable the selected CRYP interrupt */
    CRYP->IMSCR &= (uint8_t)~CRYP_IT;
  }
}

/**
  * @brief  Checks whether the specified CRYP interrupt has occurred or not.
  * @note   This function checks the status of the masked interrupt (i.e the 
  *         interrupt should be previously enabled).     
  * @param  CRYP_IT: specifies the CRYP (masked) interrupt source to check.
  *           This parameter can be one of the following values:
  *            @arg CRYP_IT_INI: Input FIFO interrupt
  *            @arg CRYP_IT_OUTI: Output FIFO interrupt
  * @retval The new state of CRYP_IT (SET or RESET).
  */
ITStatus CRYP_GetITStatus(uint8_t CRYP_IT)
{
  ITStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_CRYP_GET_IT(CRYP_IT));

  /* Check the status of the specified CRYP interrupt */
  if ((CRYP->MISR &  CRYP_IT) != (uint8_t)RESET)
  {
    /* CRYP_IT is set */
    bitstatus = SET;
  }
  else
  {
    /* CRYP_IT is reset */
    bitstatus = RESET;
  }
  /* Return the CRYP_IT status */
  return bitstatus;
}

/**
  * @brief  Checks whether the specified CRYP flag is set or not.
  * @param  CRYP_FLAG: specifies the CRYP flag to check.
  *          This parameter can be one of the following values:
  *            @arg CRYP_FLAG_IFEM: Input FIFO Empty flag.
  *            @arg CRYP_FLAG_IFNF: Input FIFO Not Full flag.
  *            @arg CRYP_FLAG_OFNE: Output FIFO Not Empty flag.
  *            @arg CRYP_FLAG_OFFU: Output FIFO Full flag.
  *            @arg CRYP_FLAG_BUSY: Busy flag.
  *            @arg CRYP_FLAG_OUTRIS: Output FIFO raw interrupt flag.
  *            @arg CRYP_FLAG_INRIS: Input FIFO raw interrupt flag.
  * @retval The new state of CRYP_FLAG (SET or RESET).
  */
FlagStatus CRYP_GetFlagStatus(uint8_t CRYP_FLAG)
{
  FlagStatus bitstatus = RESET;
  uint32_t tempreg = 0;

  /* Check the parameters */
  assert_param(IS_CRYP_GET_FLAG(CRYP_FLAG));

  /* check if the FLAG is in RISR register */
  if ((CRYP_FLAG & FLAG_MASK) != 0x00) 
  {
    tempreg = CRYP->RISR;
  }
  else  /* The FLAG is in SR register */
  {
    tempreg = CRYP->SR;
  }


  /* Check the status of the specified CRYP flag */
  if ((tempreg & CRYP_FLAG ) != (uint8_t)RESET)
  {
    /* CRYP_FLAG is set */
    bitstatus = SET;
  }
  else
  {
    /* CRYP_FLAG is reset */
    bitstatus = RESET;
  }

  /* Return the CRYP_FLAG status */
  return  bitstatus;
}

/**
  * @}
  */

/**
  * @}
  */ 

/**
  * @}
  */ 

/**
  * @}
  */ 

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -