• STM32 printf 函数原型


    在STM32工程中调用printf函数,需要加入如下代码:

    #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 PCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif /* __GNUC__ UT*/
     

    void Printf_Init(void)
    {
      /*!< At this stage the microcontroller clock setting is already configured,
           this is done through SystemInit() function which is called from startup
           file (startup_stm32f10x_xx.s) before to branch to application main.
           To reconfigure the default setting of SystemInit() function, refer to
           system_stm32f10x.c file
         */     
           
      /* USARTx 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_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);

      /* Output a message on Hyperterminal using printf function */
      //printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");
    //  printf("\r\n\n\n WWW.ARMJISHU.COM  %s configured....", EVAL_COM1_STR);
    //  printf("\n\r ############ WWW.ARMJISHU.COM! ############ ("__DATE__ " - " __TIME__ ")\n\r");
    }

    /**
      * @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;
    }

  • 相关阅读:
    Using JConsole
    python mysql开发日志
    ubuntu在终端使用的常用命令
    centOS基本操作和命令(更新)
    每日一问(如何在List中加入、设置、获取和删除其中的元素?)
    每日一问(常用的集合接口和类有哪些【二】)—ArrayList类和数组之间的转换
    笔试习题回顾
    明天要赶回武汉面试去了
    每日一问(常用的集合接口和类有哪些【二】)—最常用的集合ArrayList类
    每日一问(时间相关的类有哪些常用的?如何进行计算和输出)
  • 原文地址:https://www.cnblogs.com/glguan/p/2500785.html
Copyright © 2020-2023  润新知