stm32f4xx_cryp_aes.c ( File view )

  • By zhyunhao 2015-01-04
  • View(s):1009
  • Download(s):77
  • Point(s): 1
			/**
  ******************************************************************************
  * @file    stm32f4xx_cryp_aes.c
  * @author  MCD Application Team
  * @version V1.0.0
  * @date    30-September-2011
  * @brief   This file provides high level functions to encrypt and decrypt an 
  *          input message using AES in ECB/CBC/CTR modes.
  *          It uses the stm32f4xx_cryp.c/.h drivers to access the STM32F4xx CRYP
  *          peripheral.
  *
  *  @verbatim
  *
  *          ===================================================================
  *                                   How to use this driver
  *          ===================================================================
  *          1. Enable The CRYP controller clock using 
  *            RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_CRYP, ENABLE); function.
  *
  *          2. Encrypt and decrypt using AES in ECB Mode using CRYP_AES_ECB()
  *             function.
  *
  *          3. Encrypt and decrypt using AES in CBC Mode using CRYP_AES_CBC()
  *             function.
  *
  *          4. Encrypt and decrypt using AES in CTR Mode using CRYP_AES_CTR()
  *             function.
  *
  *  @endverbatim
  *
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************  
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_cryp.h"

/** @addtogroup STM32F4xx_StdPeriph_Driver
  * @{

  */

/** @defgroup CRYP 
  * @brief CRYP driver modules
  * @{

  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define AESBUSY_TIMEOUT    ((uint32_t) 0x00010000)

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup CRYP_Private_Functions
  * @{

  */ 

/** @defgroup CRYP_Group6 High Level AES functions
 *  @brief   High Level AES functions 
 *
@verbatim   
 ===============================================================================
                          High Level AES functions
 ===============================================================================


@endverbatim
  * @{

  */

/**
  * @brief  Encrypt and decrypt using AES in ECB Mode
  * @param  Mode: encryption or decryption Mode.
  *          This parameter can be one of the following values:
  *            @arg MODE_ENCRYPT: Encryption
  *            @arg MODE_DECRYPT: Decryption
  * @param  Key: Key used for AES algorithm.
  * @param  Keysize: length of the Key, must be a 128, 192 or 256.
  * @param  Input: pointer to the Input buffer.
  * @param  Ilength: length of the Input buffer, must be a multiple of 16.
  * @param  Output: pointer to the returned buffer.
  * @retval An ErrorStatus enumeration value:
  *          - SUCCESS: Operation done
  *          - ERROR: Operation failed
  */
ErrorStatus CRYP_AES_ECB(uint8_t Mode, uint8_t* Key, uint16_t Keysize,
                         uint8_t* Input, uint32_t Ilength, uint8_t* Output)
{

  CRYP_InitTypeDef AES_CRYP_InitStructure;
  CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure;
  __IO uint32_t counter = 0;
  uint32_t busystatus = 0;
  ErrorStatus status = SUCCESS;
  uint32_t keyaddr    = (uint32_t)Key;
  uint32_t inputaddr  = (uint32_t)Input;
  uint32_t outputaddr = (uint32_t)Output;
  uint32_t i = 0;

  /* Crypto structures initialisation*/
  CRYP_KeyStructInit(&AES_CRYP_KeyInitStructure);

  switch(Keysize)
  {

    case 128:
    AES_CRYP_InitStructure.CRYP_KeySize = CRYP_KeySize_128b;
    AES_CRYP_KeyInitStructure.CRYP_Key2Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key2Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Right= __REV(*(uint32_t*)(keyaddr));
    break;
    case 192:
    AES_CRYP_InitStructure.CRYP_KeySize  = CRYP_KeySize_192b;
    AES_CRYP_KeyInitStructure.CRYP_Key1Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key1Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key2Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key2Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Right= __REV(*(uint32_t*)(keyaddr));
    break;
    case 256:
    AES_CRYP_InitStructure.CRYP_KeySize  = CRYP_KeySize_256b;
    AES_CRYP_KeyInitStructure.CRYP_Key0Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key0Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key1Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key1Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key2Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key2Right= __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Left = __REV(*(uint32_t*)(keyaddr));
    keyaddr+=4;
    AES_CRYP_KeyInitStructure.CRYP_Key3Right= __REV(*(uint32_t*)(keyaddr));
    break;
    default:
    break;
  
}

  /*------------------ AES Decryption ------------------*/
  if(Mode == MODE_DECRYPT) /* AES decryption */
  {

    /* Flush IN/OUT FIFOs */
    CRYP_FIFOFlush();

    /* Crypto Init for Key preparation for decryption process */
    AES_CRYP_InitStructure.CRYP_AlgoDir = CRYP_AlgoDir_Decrypt;
    AES_CRYP_InitStructure.CRYP_AlgoMode = CRYP_AlgoMode_AES_Key;
    AES_CRYP_InitStructure.CRYP_DataType = CRYP_DataType_32b;
    CRYP_Init(&AES_CRYP_InitStructure);

    /* Key Initialisation */
    CRYP_KeyInit(&AES_CRYP_KeyInitStructure);

    /* Enable Crypto processor */
    CRYP_Cmd(ENABLE);

    /* wait until the Busy flag is RESET */
    do
    {

      busystatus = CRYP_GetFlagStatus(CRYP_FLAG_BUSY);
      counter++;
    
}while ((counter != AESBUSY_TIMEOUT) && (busystatus != RESET));

    if (busystatus != RESET)
   {

       status = ERROR;
    
}
    else
    {

      /* Crypto Init for decryption process */  
      AES_CRYP_InitStructure.CRYP_AlgoDir = CRYP_AlgoDir_Decrypt;
    
}
  
}
  /*------------------ AES Encryption ------------------*/
  else /* AES encryption */
  {


    CRYP_KeyInit(&AES_CRYP_KeyInitStructure);

    /* Crypto Init for Encryption process */
    AES_CRYP_InitStructure.CRYP_AlgoDir  = CRYP_AlgoDir_Encrypt;
  
}

  AES_CRYP_InitStructure.CRYP_AlgoMode = CRYP_AlgoMode_AES_ECB;
  AES_CRYP_InitStructure.CRYP_DataType = CRYP_DataType_8b;
  CRYP_Init(&AES_CRYP_InitStructure);

  /* Flush IN/OUT FIFOs */
  CRYP_FIFOFlush();

  /* Enable Crypto processor */
  CRYP_Cmd(ENABLE);

  for(i=0; ((i<Ilength) && (status != ERROR)); i+=16)
  {


    /* Write the Input block in the IN FIFO */
    CRYP_DataIn(*(uint32_t*)(inputaddr));
    inputaddr+=4;
    CRYP_DataIn(*(uint32_t*)(inputaddr));
    inputaddr+=4;
    CRYP_DataIn(*(uint32_t*)(inputaddr));
    inputaddr+=4;
    CRYP_DataIn(*(uint32_t*)(inputaddr));
    inputaddr+=4;

    /* Wait until the complete message has been processed */
    counter = 0;
    do
    {

      busystatus = CRYP_GetFlagStatus(CRYP_FLAG_BUSY);
      counter++;
    
}while ((counter != AESBUSY_TIMEOUT) && (busystatus != RESET));

    if (busystatus != RESET)
   {

       status = ERROR;
    
}
    else
    {


      /* Read the Output block from the Output FIFO */
      *(uint32_t*)(outputaddr) = CRYP_DataOut();
      outputaddr+=4;
      *(uint32_t*)(outputaddr) = CRYP_DataOut();
      outputaddr+=4;
      *(uint32_t*)(outputaddr) = CRYP_DataOut();
      outputaddr+=4;
      *(uint32_t*)(outputaddr) = CRYP_DataOut(); 
      outputaddr+=4;
    
}
  
}

  /* Disable Crypto */
  CRYP_Cmd(DISABLE);

  return status; 

}

/**
  * @brief  Encrypt and decrypt using AES in CBC Mode
  * @param  Mode: encryption or decryption Mode.
  *          This parameter can be one of the following values:
  *            @arg MODE_ENCRYPT: Encryption
  *            @arg MODE_DECRYPT: Decryption
  * @param  InitVectors: Initialisation Vectors used for AES algorithm.
  * @param  Key: Key used for AES algorithm.
  * @param  Keysize: length of the Key, must be a 128, 192 or 256.
  * @param  Input: pointer to the Input buffer.
  * @param  Ilength: length of the Input buffer, must be a multiple of 16.
  * @param  Output: pointer to the returned buffer.
  * @retval An ErrorStatus enumeration value:
  *          - SUCCESS: Operation done
  *          - ERROR: Operation failed
  */
ErrorStatus CRYP_AES_CBC(uint8_t Mode, uint8_t InitVectors[16], uint8_t *Key,
                         uint16_t Keysize, uint8_t *Input, uint32_t Ilength,
                         uint8_t *Output)
{

  CRYP_InitTypeDef AES_CRYP_InitStructure;
  CRYP_KeyInitTypeDef AES_CRYP_KeyInitStructure;
  CRYP_IVInitTypeDef AES_CRYP_IVInitStructure;
  __IO uint32_t counter = 0;
  uint32_t busys
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
01.97 kB
Autoploit.pdf77.58 kB2013-02-21|20:43
Captain_F405.map339.77 kB2014-10-09|10:09
Captain_F405.plg75.58 kB2013-04-12|21:31
Captain_F405.sct479.00 B2013-03-05|13:51
Captain_F405.tra3.18 kB2013-03-05|14:44
Captain_F405.uvgui.Administrator682.33 kB2014-02-28|14:33
Captain_F405.uvgui.haoyun91.55 kB2014-12-28|17:15
Captain_F405.uvgui.ZhaoLong109.23 kB2014-10-09|10:16
Captain_F405.uvgui_Administrator.bak679.11 kB2014-02-27|12:40
Captain_F405.uvgui_haoyun.bak88.97 kB2014-12-28|17:13
Captain_F405.uvgui_ZhaoLong.bak106.65 kB2014-10-06|20:29
Captain_F405.uvopt29.78 kB2014-12-28|17:15
Captain_F405.uvproj24.15 kB2014-02-20|23:08
Captain_F405_Captain.dep43.10 kB2014-12-28|17:15
Captain_F405_Target79.00 B2013-03-05|12:09
Captain_F405_uvopt.bak29.78 kB2014-12-28|17:13
Captain_F405_uvproj.bak24.58 kB2013-12-24|16:53
01.97 kB
common.h847.00 B2014-02-20|22:47
datamap.h2.27 kB2013-12-14|13:44
fly_config.h1.29 kB2013-09-03|15:25
debug.ini112.00 B2012-12-03|19:51
ExtDll.iex19.00 B2013-03-05|14:23
01.97 kB
cc936.c707.25 kB2013-12-24|16:07
diskio.c4.79 kB2013-12-24|17:38
diskio.h1.82 kB2013-12-24|11:26
FAT_driver.c1.40 kB2013-12-25|13:38
FAT_driver.h444.00 B2013-12-24|14:12
ff.c139.67 kB2013-12-25|12:30
ff.h11.79 kB2013-12-25|12:30
ffconf.h7.45 kB2013-12-24|16:35
integer.h936.00 B2013-12-24|16:10
SD_card.h2.42 kB2013-12-24|11:26
SD_init.c7.96 kB2013-12-25|11:56
01.97 kB
01.97 kB
STM32ADC.c6.19 kB2012-12-03|20:45
STM32ADC.h415.00 B2013-03-05|12:15
01.97 kB
AT45DB.c16.05 kB2014-02-27|10:06
AT45DB.h3.24 kB2014-02-27|10:06
Autoploit.pdf77.58 kB2013-02-21|20:43
01.97 kB
GCS_Protocol.c18.85 kB2013-12-24|14:23
GCS_Protocol.h1.56 kB2013-12-09|13:19
01.97 kB
GPS.c15.68 kB2014-01-06|11:56
GPS.h1.40 kB2014-01-06|11:56
01.97 kB
HMC5883L.c10.59 kB2013-12-14|14:11
HMC5883L.h1.35 kB2013-05-28|11:44
01.97 kB
IMU.c10.80 kB2014-02-27|11:23
IMU.h620.00 B2013-12-14|13:54
01.97 kB
LED.c4.09 kB2013-12-18|20:30
LED.h1.02 kB2013-12-24|15:03
01.97 kB
LSM303D.c5.37 kB2014-02-27|11:36
LSM303D.h5.49 kB2014-02-26|22:21
01.97 kB
Fmath.c1.15 kB2013-09-02|22:02
Fmath.h589.00 B2012-09-17|22:46
01.97 kB
MAX21000.c2.97 kB2014-02-26|22:20
MAX21000.h452.00 B2014-02-26|22:20
01.97 kB
MPU6050.c11.41 kB2013-12-24|10:19
MPU6050.h14.56 kB2013-09-09|20:38
01.97 kB
MS5611.c11.44 kB2013-12-16|19:11
MS5611.h1.71 kB2013-09-02|21:00
01.97 kB
Pid.c3.45 kB2013-12-14|12:31
pid.h1.40 kB2014-02-27|11:16
01.97 kB
PWM_Input.c10.95 kB2013-09-02|20:20
PWM_Input.h817.00 B2013-03-05|12:16
01.97 kB
PWM_Output.c12.37 kB2013-12-24|14:23
PWM_Output.h1.90 kB2013-12-24|14:23
01.97 kB
Quadrotor.c20.75 kB2014-02-27|11:23
Quadrotor.h1.18 kB2013-12-16|21:00
01.97 kB
delay.c2.75 kB2013-12-09|14:32
delay.h285.00 B2013-03-05|12:18
IOI2C.c9.49 kB2012-11-16|09:37
IOI2C.h2.10 kB2013-03-05|12:18
SPI3.c3.16 kB2014-02-27|11:55
SPI3.h327.00 B2013-12-18|21:07
01.97 kB
UART1.c9.06 kB2013-12-16|20:54
UART1.h676.00 B2013-12-09|13:19
01.97 kB
Ultrasonic.c6.64 kB2013-12-18|20:16
Ultrasonic.h387.00 B2013-03-05|13:51
01.97 kB
OSQMem.c4.30 kB2013-12-09|13:46
OSQMem.h1,006.00 B2013-12-09|13:42
USART1ConFig.c12.31 kB2013-12-09|12:05
USART1DMATX.c7.08 kB2014-12-23|11:42
USART1DMATX.h697.00 B2013-12-09|13:48
JLinkLog.txt203.61 kB2014-09-30|11:55
JLinkSettings.ini573.00 B2013-03-05|13:51
01.97 kB
01.97 kB
01.97 kB
arm_common_tables.h1.09 kB2011-10-28|10:31
arm_math.h234.69 kB2011-10-28|10:31
core_cm0.h31.20 kB2011-10-28|10:31
core_cm3.h68.09 kB2011-10-28|10:31
core_cm4.h77.42 kB2011-10-28|10:31
core_cm4_simd.h23.42 kB2011-10-28|10:31
core_cmFunc.h15.32 kB2011-10-28|10:31
core_cmInstr.h15.73 kB2011-10-28|10:31
misc.h6.63 kB2011-10-28|10:31
stm32f4xx_adc.h31.66 kB2011-10-28|10:31
stm32f4xx_can.h26.55 kB2011-10-28|10:31
stm32f4xx_crc.h2.23 kB2011-10-28|10:31
stm32f4xx_cryp.h12.23 kB2011-10-28|10:31
stm32f4xx_dac.h14.47 kB2011-10-28|10:31
stm32f4xx_dbgmcu.h4.07 kB2011-10-28|10:31
stm32f4xx_dcmi.h12.54 kB2011-10-28|10:31
stm32f4xx_dma.h28.08 kB2011-10-28|10:31
stm32f4xx_exti.h7.70 kB2011-10-28|10:31
stm32f4xx_flash.h14.12 kB2011-10-28|10:31
stm32f4xx_fsmc.h26.41 kB2011-10-28|10:31
stm32f4xx_gpio.h17.16 kB2011-10-28|10:31
stm32f4xx_hash.h8.74 kB2011-10-28|10:31
stm32f4xx_i2c.h30.78 kB2011-10-28|10:31
stm32f4xx_iwdg.h4.09 kB2011-10-28|10:31
stm32f4xx_pwr.h5.88 kB2011-10-28|10:31
stm32f4xx_rcc.h24.16 kB2011-10-28|10:31
stm32f4xx_rng.h3.74 kB2011-10-28|10:31
stm32f4xx_rtc.h39.47 kB2011-10-28|10:31
stm32f4xx_sdio.h22.11 kB2011-10-28|10:31
stm32f4xx_spi.h20.17 kB2011-10-28|10:31
stm32f4xx_syscfg.h6.93 kB2011-10-28|10:31
stm32f4xx_tim.h50.35 kB2011-10-28|10:31
stm32f4xx_usart.h17.26 kB2011-10-28|10:31
stm32f4xx_wwdg.h3.33 kB2011-10-28|10:31
01.97 kB
misc.c11.05 kB2011-10-28|10:31
stm32f4xx_adc.c66.67 kB2011-10-28|10:31
stm32f4xx_can.c58.52 kB2011-10-28|10:31
stm32f4xx_crc.c3.38 kB2011-10-28|10:31
stm32f4xx_cryp.c31.82 kB2011-10-28|10:31
stm32f4xx_cryp_aes.c21.14 kB2011-10-28|10:31
stm32f4xx_cryp_des.c9.14 kB2011-10-28|10:31
stm32f4xx_cryp_tdes.c9.85 kB2011-10-28|10:31
stm32f4xx_dac.c26.36 kB2011-10-28|10:31
stm32f4xx_dbgmcu.c6.52 kB2011-10-28|10:31
stm32f4xx_dcmi.c18.42 kB2011-10-28|10:31
stm32f4xx_dma.c51.33 kB2011-10-28|10:31
stm32f4xx_exti.c9.98 kB2011-10-28|10:31
stm32f4xx_flash.c37.02 kB2011-10-28|10:31
stm32f4xx_fsmc.c40.78 kB2011-10-28|10:31
stm32f4xx_gpio.c20.53 kB2011-10-28|10:31
stm32f4xx_hash.c25.48 kB2011-10-28|10:31
stm32f4xx_hash_md5.c9.32 kB2011-10-28|10:31
stm32f4xx_hash_sha1.c9.51 kB2011-10-28|10:31
stm32f4xx_i2c.c51.45 kB2011-10-28|10:31
stm32f4xx_iwdg.c9.32 kB2011-10-28|10:31
stm32f4xx_pwr.c24.67 kB2011-10-28|10:31
stm32f4xx_rcc.c72.90 kB2011-10-28|10:31
stm32f4xx_rng.c13.68 kB2011-10-28|10:31
stm32f4xx_rtc.c101.15 kB2011-10-28|10:31
stm32f4xx_sdio.c38.77 kB2011-10-28|10:31
stm32f4xx_spi.c50.51 kB2011-10-28|10:31
stm32f4xx_syscfg.c7.30 kB2011-10-28|10:31
stm32f4xx_tim.c122.42 kB2011-10-28|10:31
stm32f4xx_usart.c55.35 kB2011-10-28|10:31
stm32f4xx_wwdg.c10.41 kB2011-10-28|10:31
01.97 kB
01.97 kB
at45db.crf456.46 kB2014-09-30|11:21
at45db.d2.91 kB2014-09-30|11:21
at45db.o500.02 kB2014-09-30|11:21
Captain_F405.axf660.84 kB2014-10-09|10:09
Captain_F405.hex166.59 kB2014-10-09|10:09
Captain_F405.htm203.60 kB2014-10-09|10:09
Captain_F405.lnp1.34 kB2014-10-09|10:09
Captain_F405.plg203.00 B2014-12-28|17:15
Captain_F405.sct479.00 B2013-04-12|20:18
Captain_F405.tra4.46 kB2014-10-09|10:09
cc936.crf6.64 kB2013-12-24|16:12
cc936.d132.00 B2013-12-24|16:12
cc936.o185.13 kB2013-12-24|16:12
cc936.__i943.00 B2013-12-24|16:12
delay.crf416.12 kB2014-09-30|11:22
delay.d1.73 kB2014-09-30|11:22
delay.o440.09 kB2014-09-30|11:22
diskio.crf425.14 kB2014-09-30|11:22
diskio.d1.87 kB2014-09-30|11:22
diskio.o451.17 kB2014-09-30|11:22
ExtDll.iex19.00 B2014-02-27|10:02
fat_driver.crf425.40 kB2014-09-30|11:22
fat_driver.d2.08 kB2014-09-30|11:22
fat_driver.o452.20 kB2014-09-30|11:22
ff.crf37.21 kB2014-09-30|11:22
ff.d199.00 B2014-09-30|11:22
ff.o98.88 kB2014-09-30|11:22
fmath.crf417.35 kB2014-09-30|11:22
fmath.d1.76 kB2014-09-30|11:22
fmath.o443.82 kB2014-09-30|11:22
gcs_protocol.crf460.35 kB2014-09-30|11:22
gcs_protocol.d3.53 kB2014-09-30|11:22
gcs_protocol.o497.80 kB2014-09-30|11:22
gps.crf456.10 kB2014-09-30|11:21
gps.d2.89 kB2014-09-30|11:21
gps.o499.18 kB2014-09-30|11:21
hmc5883l.crf455.14 kB2014-02-20|22:47
hmc5883l.d3.06 kB2014-02-20|22:47
hmc5883l.o498.88 kB2014-02-20|22:47
hmc5883l.__i990.00 B2014-02-20|22:47
imu.crf457.10 kB2014-09-30|11:21
imu.d2.77 kB2014-09-30|11:21
imu.o495.16 kB2014-09-30|11:21
ioi2c.crf421.17 kB2014-09-30|11:22
ioi2c.d1.78 kB2014-09-30|11:22
ioi2c.o459.73 kB2014-09-30|11:22
led.crf418.07 kB2014-09-30|11:21
led.d1.69 kB2014-09-30|11:21
led.o441.42 kB2014-09-30|11:21
lsm303d.crf453.87 kB2014-09-30|11:22
lsm303d.d3.03 kB2014-09-30|11:22
lsm303d.o488.79 kB2014-09-30|11:22
main.crf463.30 kB2014-09-30|11:21
main.d2.99 kB2014-09-30|11:21
main.o492.65 kB2014-09-30|11:21
max21000.crf453.19 kB2014-09-30|11:22
max21000.d3.09 kB2014-09-30|11:22
max21000.o483.38 kB2014-09-30|11:22
misc.crf416.02 kB2014-09-30|11:21
misc.d1.66 kB2014-09-30|11:21
misc.o440.02 kB2014-09-30|11:21
mpu6050.crf470.47 kB2014-02-20|22:47
mpu6050.d3.05 kB2014-02-20|22:47
mpu6050.o510.14 kB2014-02-20|22:47
mpu6050.__i985.00 B2014-02-20|22:47
ms5611.crf455.11 kB2014-09-30|11:21
ms5611.d2.91 kB2014-09-30|11:21
ms5611.o499.88 kB2014-09-30|11:21
osqmem.crf420.87 kB2014-09-30|11:22
osqmem.d1.82 kB2014-09-30|11:22
osqmem.o443.41 kB2014-09-30|11:22
pid.crf3.46 kB2014-09-30|11:22
pid.d84.00 B2014-09-30|11:22
pid.o24.76 kB2014-09-30|11:22
pwm_input.crf420.54 kB2014-09-30|11:21
pwm_input.d1.99 kB2014-09-30|11:21
pwm_input.o453.93 kB2014-09-30|11:21
pwm_output.crf458.55 kB2014-09-30|11:22
pwm_output.d3.32 kB2014-09-30|11:22
pwm_output.o490.34 kB2014-09-30|11:22
quadrotor.crf458.90 kB2014-09-30|11:22
quadrotor.d3.26 kB2014-09-30|11:22
quadrotor.o502.92 kB2014-09-30|11:22
sd_init.crf421.82 kB2014-09-30|11:22
sd_init.d1.83 kB2014-09-30|11:22
sd_init.o464.06 kB2014-09-30|11:22
spi3.crf452.77 kB2014-09-30|11:22
spi3.d2.79 kB2014-09-30|11:22
spi3.o479.34 kB2014-09-30|11:22
startup_stm32f4xx.d59.00 B2014-09-30|11:21
startup_stm32f4xx.o7.73 kB2014-09-30|11:21
stm32adc.crf416.63 kB2014-09-30|11:21
stm32adc.d1.84 kB2014-09-30|11:21
stm32adc.o444.02 kB2014-09-30|11:21
stm32f4xx_adc.crf422.59 kB2014-09-30|11:21
stm32f4xx_adc.d2.01 kB2014-09-30|11:21
stm32f4xx_adc.o487.58 kB2014-09-30|11:21
stm32f4xx_dbgmcu.crf415.63 kB2014-09-30|11:21
stm32f4xx_dbgmcu.d2.12 kB2014-09-30|11:21
stm32f4xx_dbgmcu.o440.03 kB2014-09-30|11:21
stm32f4xx_dcmi.crf417.75 kB2014-09-30|11:21
stm32f4xx_dcmi.d2.04 kB2014-09-30|11:21
stm32f4xx_dcmi.o453.16 kB2014-09-30|11:21
stm32f4xx_dma.crf422.48 kB2014-09-30|11:21
stm32f4xx_dma.d2.01 kB2014-09-30|11:21
stm32f4xx_dma.o461.39 kB2014-09-30|11:21
stm32f4xx_exti.crf416.59 kB2014-09-30|11:21
stm32f4xx_exti.d2.04 kB2014-09-30|11:21
stm32f4xx_exti.o444.07 kB2014-09-30|11:21
stm32f4xx_flash.crf420.54 kB2014-09-30|11:21
stm32f4xx_flash.d2.08 kB2014-09-30|11:21
stm32f4xx_flash.o475.34 kB2014-09-30|11:21
stm32f4xx_gpio.crf417.89 kB2014-09-30|11:21
stm32f4xx_gpio.d2.04 kB2014-09-30|11:21
stm32f4xx_gpio.o453.07 kB2014-09-30|11:21
stm32f4xx_it.crf415.49 kB2014-09-30|11:21
stm32f4xx_it.d1.97 kB2014-09-30|11:21
stm32f4xx_it.o444.81 kB2014-09-30|11:21
stm32f4xx_pwr.crf417.44 kB2014-09-30|11:21
stm32f4xx_pwr.d2.01 kB2014-09-30|11:21
stm32f4xx_pwr.o449.88 kB2014-09-30|11:21
stm32f4xx_rcc.crf424.55 kB2014-09-30|11:21
stm32f4xx_rcc.d2.01 kB2014-09-30|11:21
stm32f4xx_rcc.o495.22 kB2014-09-30|11:21
stm32f4xx_rng.crf415.92 kB2014-09-30|11:21
stm32f4xx_rng.d2.01 kB2014-09-30|11:21
stm32f4xx_rng.o443.76 kB2014-09-30|11:21
stm32f4xx_rtc.crf433.11 kB2014-09-30|11:21
stm32f4xx_rtc.d2.01 kB2014-09-30|11:21
stm32f4xx_rtc.o516.53 kB2014-09-30|11:21
stm32f4xx_sdio.crf419.94 kB2014-09-30|11:21
stm32f4xx_sdio.d2.04 kB2014-09-30|11:21
stm32f4xx_sdio.o474.00 kB2014-09-30|11:21
stm32f4xx_spi.crf420.43 kB2014-09-30|11:21
stm32f4xx_spi.d2.01 kB2014-09-30|11:21
stm32f4xx_spi.o468.64 kB2014-09-30|11:21
stm32f4xx_syscfg.crf416.09 kB2014-09-30|11:21
stm32f4xx_syscfg.d2.12 kB2014-09-30|11:21
stm32f4xx_syscfg.o441.90 kB2014-09-30|11:21
stm32f4xx_tim.crf435.53 kB2014-09-30|11:21
stm32f4xx_tim.d2.01 kB2014-09-30|11:21
stm32f4xx_tim.o563.30 kB2014-09-30|11:21
stm32f4xx_usart.crf420.95 kB2014-09-30|11:21
stm32f4xx_usart.d2.08 kB2014-09-30|11:21
stm32f4xx_usart.o474.46 kB2014-09-30|11:21
stm32f4xx_wwdg.crf416.16 kB2014-09-30|11:21
stm32f4xx_wwdg.d2.04 kB2014-09-30|11:21
stm32f4xx_wwdg.o443.88 kB2014-09-30|11:21
system_stm32f4xx.crf417.16 kB2014-09-30|11:21
system_stm32f4xx.d2.06 kB2014-09-30|11:21
system_stm32f4xx.o438.50 kB2014-09-30|11:21
uart1.crf455.77 kB2014-09-30|11:22
uart1.d2.97 kB2014-09-30|11:22
uart1.o490.19 kB2014-09-30|11:22
ultrasonic.crf420.98 kB2014-09-30|11:22
ultrasonic.d2.09 kB2014-09-30|11:22
ultrasonic.o451.47 kB2014-09-30|11:22
usart1dmatx.crf418.27 kB2014-09-30|11:22
usart1dmatx.d2.02 kB2014-09-30|11:22
usart1dmatx.o444.86 kB2014-09-30|11:22
Protel76.01 kB2013-11-26|21:29
01.97 kB
startup_stm32f4xx.s28.82 kB2011-10-28|10:31
system_stm32f4xx.c21.36 kB2013-06-17|19:09
system_stm32f4xx.h2.05 kB2011-10-28|10:31
startup_stm32f4xx.lst73.83 kB2014-09-30|11:21
01.97 kB
main.c9.82 kB2014-02-27|11:56
main.h1.86 kB2012-11-15|11:46
Read_Me.txt6.96 kB2013-12-16|21:46
stm32f4xx_conf.h3.71 kB2013-03-05|14:42
stm32f4xx_it.c4.34 kB2013-03-05|12:05
stm32f4xx_it.h2.00 kB2013-03-05|12:06
...
Sponsored links

stm32f4xx_cryp_aes.c (12.86 MB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D