Home » Source Code » » stm32f10x_usart.c

stm32f10x_usart.c ( File view )

From:
Description:...
  • By junsheng 2014-03-11
  • View(s):19
  • Download(s):0
  • Point(s): 1
			/**
  ******************************************************************************
  * @file    stm32f10x_usart.c
  * @author  MCD Application Team
  * @version V3.4.0
  * @date    10/15/2010
  * @brief   This file provides all the USART firmware functions.
  ******************************************************************************
  * @copy
  *
  * 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 2010 STMicroelectronics</center></h2>
  */ 

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_usart.h"
#include "stm32f10x_rcc.h"

/** @addtogroup STM32F10x_StdPeriph_Driver
  * @{

  */

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

  */

/** @defgroup USART_Private_TypesDefinitions
  * @{

  */

/**
  * @
}
  */

/** @defgroup USART_Private_Defines
  * @{

  */

#define CR1_UE_Set                ((uint16_t)0x2000)  /*!< USART Enable Mask */
#define CR1_UE_Reset              ((uint16_t)0xDFFF)  /*!< USART Disable Mask */

#define CR1_WAKE_Mask             ((uint16_t)0xF7FF)  /*!< USART WakeUp Method Mask */

#define CR1_RWU_Set               ((uint16_t)0x0002)  /*!< USART mute mode Enable Mask */
#define CR1_RWU_Reset             ((uint16_t)0xFFFD)  /*!< USART mute mode Enable Mask */
#define CR1_SBK_Set               ((uint16_t)0x0001)  /*!< USART Break Character send Mask */
#define CR1_CLEAR_Mask            ((uint16_t)0xE9F3)  /*!< USART CR1 Mask */
#define CR2_Address_Mask          ((uint16_t)0xFFF0)  /*!< USART address Mask */

#define CR2_LINEN_Set              ((uint16_t)0x4000)  /*!< USART LIN Enable Mask */
#define CR2_LINEN_Reset            ((uint16_t)0xBFFF)  /*!< USART LIN Disable Mask */

#define CR2_LBDL_Mask             ((uint16_t)0xFFDF)  /*!< USART LIN Break detection Mask */
#define CR2_STOP_CLEAR_Mask       ((uint16_t)0xCFFF)  /*!< USART CR2 STOP Bits Mask */
#define CR2_CLOCK_CLEAR_Mask      ((uint16_t)0xF0FF)  /*!< USART CR2 Clock Mask */

#define CR3_SCEN_Set              ((uint16_t)0x0020)  /*!< USART SC Enable Mask */
#define CR3_SCEN_Reset            ((uint16_t)0xFFDF)  /*!< USART SC Disable Mask */

#define CR3_NACK_Set              ((uint16_t)0x0010)  /*!< USART SC NACK Enable Mask */
#define CR3_NACK_Reset            ((uint16_t)0xFFEF)  /*!< USART SC NACK Disable Mask */

#define CR3_HDSEL_Set             ((uint16_t)0x0008)  /*!< USART Half-Duplex Enable Mask */
#define CR3_HDSEL_Reset           ((uint16_t)0xFFF7)  /*!< USART Half-Duplex Disable Mask */

#define CR3_IRLP_Mask             ((uint16_t)0xFFFB)  /*!< USART IrDA LowPower mode Mask */
#define CR3_CLEAR_Mask            ((uint16_t)0xFCFF)  /*!< USART CR3 Mask */

#define CR3_IREN_Set              ((uint16_t)0x0002)  /*!< USART IrDA Enable Mask */
#define CR3_IREN_Reset            ((uint16_t)0xFFFD)  /*!< USART IrDA Disable Mask */
#define GTPR_LSB_Mask             ((uint16_t)0x00FF)  /*!< Guard Time Register LSB Mask */
#define GTPR_MSB_Mask             ((uint16_t)0xFF00)  /*!< Guard Time Register MSB Mask */
#define IT_Mask                   ((uint16_t)0x001F)  /*!< USART Interrupt Mask */

/* USART OverSampling-8 Mask */
#define CR1_OVER8_Set             ((u16)0x8000)  /* USART OVER8 mode Enable Mask */
#define CR1_OVER8_Reset           ((u16)0x7FFF)  /* USART OVER8 mode Disable Mask */

/* USART One Bit Sampling Mask */
#define CR3_ONEBITE_Set           ((u16)0x0800)  /* USART ONEBITE mode Enable Mask */
#define CR3_ONEBITE_Reset         ((u16)0xF7FF)  /* USART ONEBITE mode Disable Mask */

/**
  * @
}
  */

/** @defgroup USART_Private_Macros
  * @{

  */

/**
  * @
}
  */

/** @defgroup USART_Private_Variables
  * @{

  */

/**
  * @
}
  */

/** @defgroup USART_Private_FunctionPrototypes
  * @{

  */

/**
  * @
}
  */

/** @defgroup USART_Private_Functions
  * @{

  */

/**
  * @brief  Deinitializes the USARTx peripheral registers to their default reset values.
  * @param  USARTx: Select the USART or the UART peripheral. 
  *   This parameter can be one of the following values: USART1, USART2, USART3, UART4 or UART5.
  * @retval None
  */
void USART_DeInit(USART_TypeDef* USARTx)
{

  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));

  if (USARTx == USART1)
  {

    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
  
}
  else if (USARTx == USART2)
  {

    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);
  
}
  else if (USARTx == USART3)
  {

    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE);
  
}    
  else if (USARTx == UART4)
  {

    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE);
    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE);
  
}    
  else
  {

    if (USARTx == UART5)
    {
 
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE);
      RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE);
    
}
  
}

}

/**
  * @brief  Initializes the USARTx peripheral according to the specified
  *   parameters in the USART_InitStruct .
  * @param  USARTx: Select the USART or the UART peripheral. 
  *   This parameter can be one of the following values:
  *   USART1, USART2, USART3, UART4 or UART5.
  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure
  *   that contains the configuration information for the specified USART peripheral.
  * @retval None
  */
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)
{

  uint32_t tmpreg = 0x00, apbclock = 0x00;
  uint32_t integerdivider = 0x00;
  uint32_t fractionaldivider = 0x00;
  uint32_t usartxbase = 0;
  RCC_ClocksTypeDef RCC_ClocksStatus;
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_BAUDRATE(USART_InitStruct->USART_BaudRate));  
  assert_param(IS_USART_WORD_LENGTH(USART_InitStruct->USART_WordLength));
  assert_param(IS_USART_STOPBITS(USART_InitStruct->USART_StopBits));
  assert_param(IS_USART_PARITY(USART_InitStruct->USART_Parity));
  assert_param(IS_USART_MODE(USART_InitStruct->USART_Mode));
  assert_param(IS_USART_HARDWARE_FLOW_CONTROL(USART_InitStruct->USART_HardwareFlowControl));
  /* The hardware flow control is available only for USART1, USART2 and USART3 */
  if (USART_InitStruct->USART_HardwareFlowControl != USART_HardwareFlowControl_None)
  {

    assert_param(IS_USART_123_PERIPH(USARTx));
  
}

  usartxbase = (uint32_t)USARTx;

/*---------------------------- USART CR2 Configuration -----------------------*/
  tmpreg = USARTx->CR2;
  /* Clear STOP[13:12] bits */
  tmpreg &= CR2_STOP_CLEAR_Mask;
  /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit ------------*/
  /* Set STOP[13:12] bits according to USART_StopBits value */
  tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits;
  
  /* Write to USART CR2 */
  USARTx->CR2 = (uint16_t)tmpreg;

/*---------------------------- USART CR1 Configuration -----------------------*/
  tmpreg = USARTx->CR1;
  /* Clear M, PCE, PS, TE and RE bits */
  tmpreg &= CR1_CLEAR_Mask;
  /* Configure the USART Word Length, Parity and mode ----------------------- */
  /* Set the M bits according to USART_WordLength value */
  /* Set PCE and PS bits according to USART_Parity value */
  /* Set TE and RE bits according to USART_Mode value */
  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity |
            USART_InitStruct->USART_Mode;
  /* Write to USART CR1 */
  USARTx->CR1 = (uint16_t)tmpreg;

/*---------------------------- USART CR3 Configuration -----------------------*/  
  tmpreg = USARTx->CR3;
  /* Clear CTSE and RTSE bits */
  tmpreg &= CR3_CLEAR_Mask;
  /* Configure the USART HFC -------------------------------------------------*/
  /* Set CTSE and RTSE bits according to USART_HardwareFlowControl value */
  tmpreg |= USART_InitStruct->USART_HardwareFlowControl;
  /* Write to USART CR3 */
  USARTx->CR3 = (uint16_t)tmpreg;

/*---------------------------- USART BRR Configuration -----------------------*/
  /* Configure the USART Baud Rate -------------------------------------------*/
  RCC_GetClocksFreq(&RCC_ClocksStatus);
  if (usartxbase == USART1_BASE)
  {

    apbclock = RCC_ClocksStatus.PCLK2_Frequency;
  
}
  else
  {

    apbclock = RCC_ClocksStatus.PCLK1_Frequency;
  
}
  
  /* Determine the integer part */
  if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
  {

    /* Integer part computing in case Oversampling mode is 8 Samples */
    integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));    
  
}
  else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
  {

    /* Integer part computing in case Oversampling mode is 16 Samples */
    integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));    
  
}
  tmpreg = (integerdivider / 100) << 4;

  /* Determine the fractional part */
  fractionaldivider = integerdivider - (100 * (tmpreg >> 4));

  /* Implement the fractional part in the register */
  if ((USARTx->CR1 & CR1_OVER8_Set) != 0)
  {

    tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07);
  
}
  else /* if ((USARTx->CR1 & CR1_OVER8_Set) == 0) */
  {

    tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
  
}
  
  /* Write to USART BRR */
  USARTx->BRR = (uint16_t)tmpreg;

}

/**
  * @brief  Fills each USART_InitStruct member with its default value.
  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure
  *   which will be initialized.
  * @retval None
  *
...
...
(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
api.crf321.00 kB05-03-14|21:03
api.d1.97 kB05-03-14|21:03
api.o354.55 kB05-03-14|21:03
core_cm3.crf3.44 kB09-03-14|10:20
core_cm3.d117.00 B09-03-14|10:20
core_cm3.o10.04 kB09-03-14|10:20
ExtDll.iex19.00 B30-09-13|23:03
gpio.crf268.62 kB13-12-12|09:33
gpio.d786.00 B13-12-12|09:33
gpio.o283.17 kB13-12-12|09:33
main.crf313.55 kB09-03-14|10:21
main.d1.67 kB09-03-14|10:21
main.o352.55 kB09-03-14|10:21
misc.crf312.89 kB09-03-14|10:19
misc.d1.73 kB09-03-14|10:19
misc.o350.23 kB09-03-14|10:19
os_cpu_a.d53.00 B05-03-14|21:02
os_cpu_a.o1.74 kB05-03-14|21:02
queue.crf5.80 kB13-12-12|09:33
queue.d426.00 B13-12-12|09:33
queue.o15.94 kB13-12-12|09:33
SPI0.00 B17%|09-03-14
SPI0.00 B38%|09-03-14
SPI0.00 B9%|09-03-14
SPI0.00 B24%|09-03-14
SPI0.00 B95%|09-03-14
SPI0.00 B50%|05-03-14
SPI0.00 B18%|09-03-14
SPI0.00 B50%|09-10-13
spiflash.crf276.33 kB13-12-12|09:33
spiflash.d1.22 kB13-12-12|09:33
spiflash.o294.59 kB13-12-12|09:33
spi_2400.crf288.55 kB03-03-14|19:34
spi_2400.d1.04 kB03-03-14|19:34
spi_2400.o305.26 kB03-03-14|19:34
spi_2400.__i400.00 B05-03-14|19:13
startup.d51.00 B05-03-14|21:02
startup.o5.77 kB05-03-14|21:02
startup_stm32f10x_md.d77.00 B07-03-14|19:44
startup_stm32f10x_md.o5.76 kB07-03-14|19:44
stm32f10x_adc.crf319.75 kB09-03-14|10:19
stm32f10x_adc.d2.01 kB09-03-14|10:19
stm32f10x_adc.o363.95 kB09-03-14|10:19
stm32f10x_bkp.crf313.76 kB09-03-14|10:19
stm32f10x_bkp.d2.01 kB09-03-14|10:19
stm32f10x_bkp.o352.49 kB09-03-14|10:19
stm32f10x_can.crf319.68 kB09-03-14|10:19
stm32f10x_can.d2.01 kB09-03-14|10:19
stm32f10x_can.o358.97 kB09-03-14|10:19
stm32f10x_cec.crf323.71 kB05-03-14|21:02
stm32f10x_cec.d2.31 kB05-03-14|21:02
stm32f10x_crc.crf312.49 kB09-03-14|10:19
stm32f10x_crc.d2.01 kB09-03-14|10:19
stm32f10x_crc.o350.20 kB09-03-14|10:19
stm32f10x_dac.crf314.39 kB09-03-14|10:19
stm32f10x_dac.d2.01 kB09-03-14|10:19
stm32f10x_dac.o353.02 kB09-03-14|10:19
stm32f10x_dbgmcu.crf312.24 kB09-03-14|10:19
stm32f10x_dbgmcu.d2.11 kB09-03-14|10:19
stm32f10x_dbgmcu.o349.39 kB09-03-14|10:19
stm32f10x_dma.crf315.22 kB09-03-14|10:19
stm32f10x_dma.d2.01 kB09-03-14|10:19
stm32f10x_dma.o352.88 kB09-03-14|10:19
stm32f10x_exti.crf313.38 kB09-03-14|10:19
stm32f10x_exti.d2.05 kB09-03-14|10:19
stm32f10x_exti.o351.03 kB09-03-14|10:19
stm32f10x_flash.crf318.80 kB09-03-14|10:19
stm32f10x_flash.d2.08 kB09-03-14|10:19
stm32f10x_flash.o359.09 kB09-03-14|10:19
stm32f10x_fsmc.crf318.23 kB09-03-14|10:19
stm32f10x_fsmc.d2.05 kB09-03-14|10:19
stm32f10x_fsmc.o356.60 kB09-03-14|10:19
stm32f10x_gpio.crf315.86 kB09-03-14|10:19
stm32f10x_gpio.d2.05 kB09-03-14|10:19
stm32f10x_gpio.o355.88 kB09-03-14|10:19
stm32f10x_i2c.crf318.47 kB09-03-14|10:19
stm32f10x_i2c.d2.01 kB09-03-14|10:19
stm32f10x_i2c.o361.22 kB09-03-14|10:19
stm32f10x_it.crf312.48 kB09-03-14|10:19
stm32f10x_it.d1.97 kB09-03-14|10:19
stm32f10x_it.o351.21 kB09-03-14|10:19
stm32f10x_iwdg.crf312.55 kB09-03-14|10:19
stm32f10x_iwdg.d2.05 kB09-03-14|10:19
stm32f10x_iwdg.o350.07 kB09-03-14|10:19
stm32f10x_pwr.crf313.82 kB09-03-14|10:19
stm32f10x_pwr.d2.01 kB09-03-14|10:19
stm32f10x_pwr.o351.79 kB09-03-14|10:19
stm32f10x_rcc.crf319.72 kB09-03-14|10:19
stm32f10x_rcc.d2.01 kB09-03-14|10:19
stm32f10x_rcc.o360.86 kB09-03-14|10:19
stm32f10x_rtc.crf313.78 kB09-03-14|10:19
stm32f10x_rtc.d2.01 kB09-03-14|10:19
stm32f10x_rtc.o352.61 kB09-03-14|10:19
stm32f10x_sdio.crf316.86 kB09-03-14|10:19
stm32f10x_sdio.d2.05 kB09-03-14|10:19
stm32f10x_sdio.o357.89 kB09-03-14|10:19
stm32f10x_spi.crf316.50 kB09-03-14|10:19
stm32f10x_spi.d2.01 kB09-03-14|10:19
stm32f10x_spi.o357.61 kB09-03-14|10:19
stm32f10x_tim.crf332.80 kB09-03-14|10:20
stm32f10x_tim.d2.01 kB09-03-14|10:20
stm32f10x_tim.o385.45 kB09-03-14|10:20
stm32f10x_usart.crf317.73 kB09-03-14|10:20
stm32f10x_usart.d2.08 kB09-03-14|10:20
stm32f10x_usart.o359.69 kB09-03-14|10:20
stm32f10x_wwdg.crf312.98 kB09-03-14|10:20
stm32f10x_wwdg.d2.05 kB09-03-14|10:20
stm32f10x_wwdg.o350.93 kB09-03-14|10:20
sysinit.crf216.50 kB05-03-14|19:45
sysinit.d270.00 B05-03-14|19:45
sysinit.o226.87 kB05-03-14|19:45
sysinit.__i358.00 B05-03-14|19:45
system_stm32f10x.crf313.42 kB09-03-14|10:20
system_stm32f10x.d2.02 kB09-03-14|10:20
system_stm32f10x.o350.25 kB09-03-14|10:20
time.crf273.11 kB13-12-12|09:34
time.d1.12 kB13-12-12|09:34
time.o292.04 kB13-12-12|09:34
uart.crf273.73 kB13-12-12|09:34
uart.d1.12 kB13-12-12|09:34
uart.o292.21 kB13-12-12|09:34
os_cpu_a.lst5.56 kB05-03-14|21:02
SPI0.00 B10%|09-03-14
startup.lst38.24 kB05-03-14|21:02
startup_stm32f10x_md.lst40.27 kB07-03-14|19:44
stm32f10x_conf.h3.08 kB05-03-14|22:14
stm32f10x_it.h1.84 kB07-05-09|13:40
JLinkLog.txt53.74 kB09-03-14|12:07
JLinkSettings.ini573.00 B13-12-12|09:33
SPI.uvgui.Administrator134.37 kB09-03-14|14:05
SPI.uvgui_Administrator.bak134.37 kB09-03-14|12:06
SPI.uvopt18.18 kB09-03-14|14:05
SPI.uvproj19.47 kB05-03-14|22:20
SPI_DebugInFlash.dep41.53 kB09-03-14|13:59
SPI_uvopt.bak18.18 kB09-03-14|12:06
SPI_uvproj.bak19.50 kB05-03-14|22:17
core_cm3.c15.87 kB07-05-09|13:40
core_cm3.h41.09 kB07-05-09|13:40
startup_stm32f10x_md.s12.27 kB07-05-09|13:40
stm32f10x.h518.43 kB07-05-09|13:40
system_stm32f10x.c23.60 kB07-03-14|19:35
system_stm32f10x.h2.11 kB07-05-09|13:40
misc.h4.83 kB07-05-09|13:40
stm32f10x_adc.h19.10 kB07-05-09|13:40
stm32f10x_bkp.h7.20 kB07-05-09|13:40
stm32f10x_can.h13.95 kB07-05-09|13:40
stm32f10x_crc.h1.93 kB07-05-09|13:40
stm32f10x_dac.h10.03 kB07-05-09|13:40
stm32f10x_dbgmcu.h2.91 kB07-05-09|13:40
stm32f10x_dma.h18.35 kB07-05-09|13:40
stm32f10x_exti.h5.70 kB07-05-09|13:40
stm32f10x_flash.h14.11 kB07-05-09|13:40
stm32f10x_fsmc.h16.87 kB07-05-09|13:40
stm32f10x_gpio.h14.70 kB07-05-09|13:40
stm32f10x_i2c.h16.53 kB07-05-09|13:40
stm32f10x_iwdg.h3.59 kB07-05-09|13:40
stm32f10x_pwr.h4.10 kB07-05-09|13:40
stm32f10x_rcc.h15.88 kB07-05-09|13:40
stm32f10x_rtc.h3.57 kB07-05-09|13:40
stm32f10x_sdio.h18.16 kB07-05-09|13:40
stm32f10x_spi.h14.55 kB07-05-09|13:40
stm32f10x_tim.h47.63 kB07-05-09|13:40
stm32f10x_usart.h14.14 kB07-05-09|13:40
stm32f10x_wwdg.h2.72 kB07-05-09|13:40
misc.c6.71 kB07-05-09|13:40
stm32f10x_adc.c45.54 kB07-05-09|13:40
stm32f10x_bkp.c8.05 kB07-05-09|13:40
stm32f10x_can.c30.23 kB07-05-09|13:40
stm32f10x_crc.c3.26 kB07-05-09|13:40
stm32f10x_dac.c13.40 kB07-05-09|13:40
stm32f10x_dbgmcu.c4.21 kB07-05-09|13:40
stm32f10x_dma.c26.72 kB07-05-09|13:40
stm32f10x_exti.c6.64 kB07-05-09|13:40
stm32f10x_flash.c25.73 kB07-05-09|13:40
stm32f10x_fsmc.c34.11 kB07-05-09|13:40
stm32f10x_gpio.c17.47 kB07-05-09|13:40
stm32f10x_i2c.c36.45 kB07-05-09|13:40
stm32f10x_iwdg.c4.70 kB07-05-09|13:40
stm32f10x_pwr.c8.72 kB07-05-09|13:40
stm32f10x_rcc.c32.99 kB07-05-09|13:40
stm32f10x_rtc.c8.38 kB07-05-09|13:40
stm32f10x_sdio.c27.82 kB07-05-09|13:40
stm32f10x_spi.c27.09 kB07-05-09|13:40
stm32f10x_tim.c99.50 kB07-05-09|13:40
stm32f10x_usart.c34.11 kB07-05-09|13:40
stm32f10x_wwdg.c5.49 kB07-05-09|13:40
main.c4.15 kB09-03-14|10:21
stm32f10x_it.c4.38 kB07-03-14|19:36
DebugInFlash0.00 B09-03-14|10:21
List0.00 B05-03-14|22:18
inc0.00 B05-03-14|22:07
src0.00 B05-03-14|22:07
debug0.00 B25-11-13|17:30
inc0.00 B05-03-14|22:14
startup0.00 B07-03-14|19:35
stm32lib0.00 B05-03-14|22:07
user0.00 B09-03-14|10:21
lowpower0.00 B09-03-14|14:05
standbylowpower0.00 B07-03-14|19:46
...
Sponsored links

stm32f10x_usart.c (4.23 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