text: /**
    ******************************************************************************
    * @file    Lib_DEBUG/Lib_DEBUG_Example/main.c 
    * @author  MCD Application Team
    * @version V1.8.0
    * @date    04-November-2016
    * @brief   Main program body
    ******************************************************************************
    * @attention
    *
    * <h2><center>&copy; COPYRIGHT 2016 STMicroelectronics</center></h2>
    *
    * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
    * You may not use this file except in compliance with the License.
    * You may obtain a copy of the License at:
    *
    *        http://www.st.com/software_license_agreement_liberty_v2
    *
    * Unless required by applicable law or agreed to in writing, software 
    * distributed under the License is distributed on an "AS IS" BASIS, 
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    *
    ******************************************************************************
    */
  
  /* Includes ------------------------------------------------------------------*/
  #include "main.h"
  
  /** @addtogroup STM32F4xx_StdPeriph_Examples
    * @{
    */
  
  /** @addtogroup Lib_DEBUG_Example
    * @{
    */ 
  
  /* Private typedef -----------------------------------------------------------*/
  /* Private define ------------------------------------------------------------*/
  /* Private macro -------------------------------------------------------------*/
  /* Private variables ---------------------------------------------------------*/
  USART_InitTypeDef USART_InitStructure;
  
  /* Private function prototypes -----------------------------------------------*/
  #ifdef __GNUC__
    /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
       set to 'Yes') calls __io_putchar() */
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  #else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  #endif /* __GNUC__ */
  
  /* Private functions ---------------------------------------------------------*/
  
  /**
    * @brief  Main program
    * @param  None
    * @retval None
    */
  int main(void)
  {
    /*!< At this stage the microcontroller clock setting is already configured, 
         this is done through SystemInit() function which is called from startup
         file (startup_stm32f40xx.s/startup_stm32f427x.s) before to branch to 
         application main.
         To reconfigure the default setting of SystemInit() function, refer to
          system_stm32f4xx.c file
       */     
   GPIO_InitTypeDef GPIOA_InitStructure;
   
    /* USARTx configured as follows:
          - 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_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;
  
    STM_EVAL_COMInit(COM1, &USART_InitStructure);
   
    /* Initialize all peripherals pointers */
    IP_Debug();
    
    printf("\r\n STM32F4xx Firmware Library compiled with FULL ASSERT function... \n\r");
    printf("...Run-time checking enabled  \n\r");
  
    /* Simulate wrong parameter passed to library function ---------------------*/
    /* To enable SPI1 clock, RCC_APB2PeriphClockCmd() function must be used and
       not RCC_APB1PeriphClockCmd() */
    RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
    
    /* Some member of GPIOA_InitStructure structure are not initialized */
    GPIOA_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIOA_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    /*GPIOA_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;*/
    GPIOA_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIOA_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; 
    GPIO_Init(GPIOA, &GPIOA_InitStructure);
    
    while (1)
    {
    }
  }
  
  #ifdef  USE_FULL_ASSERT
  
  /**
    * @brief  Reports the name of the source file and the source line number
    *         where the assert_param error has occurred.
    * @param  file: pointer to the source file name
    * @param  line: assert_param error line source number
    * @retval None
    */
  void assert_failed(uint8_t* file, uint32_t 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
  
  /**
    * @brief  Retargets the C library printf function to the USART.
    * @param  None
    * @retval None
    */
  PUTCHAR_PROTOTYPE
  {
    /* Place your implementation of fputc here */
    /* e.g. write a character to the USART */
    USART_SendData(EVAL_COM1, (uint8_t) ch);
  
    /* Loop until the end of transmission */
    while(USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
    {
    }
  
    return ch;
  }
  
  /**
    * @}
    */ 
  
  /**
    * @}
    */ 
  
  /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  