www.pudn.com > Flash.rar > usart1.c, change:2008-09-29,size:9200b


/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 
* File Name          : main.c 
* Author             : MCD Application Team 
* Date First Issued  : 05/21/2007 
* Description        : Main program body 
******************************************************************************** 
* History: 
* 05/21/2007: V0.3 
******************************************************************************** 
* THE PRESENT SOFTWARE 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 SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 
*******************************************************************************/ 
 
/* Includes ------------------------------------------------------------------*/ 
#include "stm32f10x_lib.h" 
#include <stdio.h> 
 
/* Private typedef -----------------------------------------------------------*/ 
/* Private define ------------------------------------------------------------*/ 
/* Private macro -------------------------------------------------------------*/ 
/* Private variables ---------------------------------------------------------*/ 
ErrorStatus HSEStartUpStatus1; 
 
/* Private function prototypes -----------------------------------------------*/ 
void RCC_Configuration1(void); 
void NVIC_Configuration1(void); 
void GPIO_Configuration1(void); 
void USART_Configuration1(void); 
 
/* Private functions ---------------------------------------------------------*/ 
 
/******************************************************************************* 
* Function Name  : main 
* Description    : Main program. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void usart1(void) 
{ 
 
    
#ifdef DEBUG 
  debug(); 
#endif 
 
  /* Configure the system clocks */ 
  RCC_Configuration1(); 
     
  /* NVIC Configuration */ 
  NVIC_Configuration1(); 
 
  /* Configure the GPIOs */ 
  GPIO_Configuration1(); 
   
  /* Configure the USART1 */ 
  USART_Configuration1(); 
 
  printf("\r\n  -------------------------- \r\n"); 
 
} 
 
#ifdef  DEBUG 
/******************************************************************************* 
* Function Name  : assert_failed 
* Description    : Reports the name of the source file and the source line number 
*                  where the assert error has occurred. 
* Input          : - file: pointer to the source file name 
*                  - line: assert error line source number 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void assert_failed(u8* file, u32 line) 
{  
  /* User can add his own implementation to report the file name and line number */ 
 
  printf("\n\r Wrong parameter value detected on\r\n"); 
  printf("       file  %s\r\n", file); 
  printf("       line  %d\r\n", line); 
     
  /* Infinite loop */ 
  /* while (1) 
  { 
  } */ 
} 
#endif 
 
/******************************************************************************* 
* Function Name  : RCC_Configuration 
* Description    : Configures the different system clocks. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void RCC_Configuration1(void) 
{ 
  /* RCC system reset(for debug purpose) */ 
  RCC_DeInit(); 
 
  /* Enable HSE */ 
  RCC_HSEConfig(RCC_HSE_ON); 
 
  /* Wait till HSE is ready */ 
  HSEStartUpStatus1 = RCC_WaitForHSEStartUp(); 
 
  if(HSEStartUpStatus1 == SUCCESS) 
  { 
    /* HCLK = SYSCLK */ 
    RCC_HCLKConfig(RCC_SYSCLK_Div1);  
   
    /* PCLK2 = HCLK */ 
    RCC_PCLK2Config(RCC_HCLK_Div1);  
 
    /* PCLK1 = HCLK/2 */ 
    RCC_PCLK1Config(RCC_HCLK_Div2); 
 
    /* Flash 2 wait state */ 
    FLASH_SetLatency(FLASH_Latency_2); 
    /* Enable Prefetch Buffer */ 
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 
 
    /* PLLCLK = 8MHz * 9 = 72 MHz */ 
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); 
 
    /* Enable PLL */  
    RCC_PLLCmd(ENABLE); 
 
    /* Wait till PLL is ready */ 
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 
    { 
    } 
 
    /* Select PLL as system clock source */ 
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
 
    /* Wait till PLL is used as system clock source */ 
    while(RCC_GetSYSCLKSource() != 0x08) 
    { 
    } 
  } 
    
  /* Enable USART1 and GPIOA clock */ 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); 
} 
 
/******************************************************************************* 
* Function Name  : NVIC_Configuration 
* Description    : Configures Vector Table base location. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void NVIC_Configuration1(void) 
{ 
#ifdef  VECT_TAB_RAM   
  /* Set the Vector Table base location at 0x20000000 */  
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);  
#else  /* VECT_TAB_FLASH  */ 
  /* Set the Vector Table base location at 0x08000000 */  
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);    
#endif 
} 
 
/******************************************************************************* 
* Function Name  : GPIO_Configuration 
* Description    : Configures the different GPIO ports. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void GPIO_Configuration1(void) 
{ 
  GPIO_InitTypeDef GPIO_InitStructure; 
 
  /* Configure USART1 Tx (PA.09) as alternate function push-pull */ 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
     
  /* Configure USART1 Rx (PA.10) as input floating */ 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
} 
 
/******************************************************************************* 
* Function Name  : USART_Configuration 
* Description    : Configures the USART1. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
void USART_Configuration1(void) 
{ 
  USART_InitTypeDef USART_InitStructure; 
  //USART_ClockInitTypeDef USART_ClockInitStructure; 
 
/* USART1 configuration ------------------------------------------------------*/ 
  /* USART1 configured as follow: 
        - BaudRate = 115200 baud   
        - Word Length = 8 Bits 
        - One Stop Bit 
        - No parity 
        - Hardware flow control disabled (RTS and CTS signals) 
        - Receive and transmit enabled 
        - USART Clock disabled 
        - USART CPOL: Clock is active low 
        - USART CPHA: Data is captured on the middle  
        - USART LastBit: The clock pulse of the last data bit is not output to  
                         the SCLK pin 
  */ 
  /* 
  USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; 
  USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; 
  USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; 
  USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; 
 
  USART_ClockInit(USART1, &USART_ClockInitStructure); 
  */ 
 
  USART_InitStructure.USART_BaudRate = 115200; 
  USART_InitStructure.USART_WordLength = USART_WordLength_8b; 
  USART_InitStructure.USART_StopBits = USART_StopBits_1; 
  USART_InitStructure.USART_Parity = USART_Parity_No; 
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 
  USART_InitStructure.USART_Clock = USART_Clock_Disable; 
  USART_InitStructure.USART_CPOL = USART_CPOL_Low; 
  USART_InitStructure.USART_CPHA = USART_CPHA_2Edge; 
  USART_InitStructure.USART_LastBit = USART_LastBit_Disable; 
 
  USART_Init(USART1, &USART_InitStructure); 
     
  /* Enable USART1 */ 
  USART_Cmd(USART1, ENABLE); 
} 
 
/******************************************************************************* 
* Function Name  : fputc 
* Description    : Retargets the C library printf function to the USART. 
* Input          : None 
* Output         : None 
* Return         : None 
*******************************************************************************/ 
int fputc(int ch, FILE *f) 
{ 
  /* Place your implementation of fputc here */ 
  /* e.g. write a character to the USART */ 
  USART_SendData(USART1, (u8) ch); 
 
  /* Loop until the end of transmission */ 
  while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 
  { 
  } 
 
  return ch; 
} 
 
/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/