嵌入式printf函数运用基于ti 16位MCU

今天看到有人提问说如何实现16mcu打印功能使用(基于IAR编译器).使用这里特意准备说一下如何基于iar编译环境下实现16位mcu打印功能运用printf。

要实现这个功能,只要两个步骤:

  1. 配置option选项,选择full dlib
  2. 申明函数fputc和fputs:
    /**
      * printf() function using
      */
    #define UART_PRINTF
    
    #ifdef UART_PRINTF
    int fputc(int _c, register FILE *_fp);
    int fputs(const char *_ptr, register FILE *_fp);
    
    int fputc(int _c, register FILE *_fp)
    {
      while (!(IFG2&UCA0TXIFG));
      UCA0TXBUF = (unsigned char) _c;
    
      return((unsigned char)_c);
    }
    
    int fputs(const char *_ptr, register FILE *_fp)
    {
      unsigned int i, len;
    
      len = strlen(_ptr);
    
      for(i=0 ; i<len ; i++)
      {
        while (!(IFG2&UCA0TXIFG));
        UCA0TXBUF = (unsigned char) _ptr[i];
      }
    
      return len;
    }
    #endif

    至此完成printf函数功能。(ccs编译环境下可以参考:https://processors.wiki.ti.com/index.php/Printf_support_for_MSP430_CCSTUDIO_compiler

  3. 实例: printf("hello world.%d ",i++); 打印“hello world”与变量i的值。

谢谢。

End.

原文地址:https://www.cnblogs.com/lumao1122-Milolu/p/13303819.html