<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPCXpresso IDE FAQs中的主题 Using printf()</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE-FAQs/Using-printf/m-p/474799#M129</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H1 id="toc-hId-1904943783"&gt;Printf and semihosting&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the output from &lt;TT&gt;printf()&lt;/TT&gt; (and &lt;TT&gt;puts()&lt;/TT&gt;) will be displayed in the debugger console via the semihosting mechanism. This provides a very easy way of getting basic status information out from your application running on your target.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For &lt;TT&gt;printf()&lt;/TT&gt; to work like this, you must ensure that you are linking with a "semihost" library variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId--647213178"&gt;Redlib printf variants&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Redlib provides the following two variants of printf. Some of the LPCXpresso project wizards provide options to select which of these to use when you create a new project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-899083652"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Character vs String output&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; and &lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; functions will output the generated string at once, so that a single semihosted operation can output the string to the console of the debugger. Note that these versions of &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; /&lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; make use of &lt;TT&gt;&lt;STRONG&gt;malloc()&lt;/STRONG&gt;&lt;/TT&gt; to provide a temporary buffer on the heap in order to generate the string to be displayed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is possible to switch to using "character-by-character" versions of these functions (which do not require additional heap space) by specifying the build define "&lt;TT&gt;&lt;STRONG&gt;CR_PRINTF_CHAR&lt;/STRONG&gt;&lt;/TT&gt;" (which should be set at the project level). This can be useful, for example, if you are retargeting &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; to write out over a UART (as detailed below)- as in this case it is pointless creating a temporary buffer to store the whole string, only to then print it out over the UART one character at a time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--1653073309"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;"Integer only" vs "full" printf (including floating point)&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; routine incorporated into Redlib is much smaller than that in Newlib. Thus if code size is an issue, then always try to use Redlib if possible In addition if your application does not pass floating point numbers to printf, you can also select a "integer only" (non-floating point compatible) variant of printf. This will reduce code size further.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To enable the "integer only" printf from Redlib, define the symbol "&lt;TT&gt;&lt;STRONG&gt;CR_INTEGER_PRINTF&lt;/STRONG&gt;&lt;/TT&gt;" (at the project level).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that if you only require the display of fixed strings, then using &lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; rather than &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; will noticeably reduce the code size of your application.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-286250531"&gt;Printf when using LPCOpen&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you are building your application against LPCOpen, you may find that printf output does not get displayed in the LPCXpresso debug console by default. This is due to many LPCOpen board library projects by default redirecting printf to a UART output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you want to direct printf output to the debug console instead, then you will need to modify your projects so that:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Your main application project is linked against the "semihost" variant of the C library, and&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;You disable the LPCOpen board library's redirection of printf output by either:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;locating the source file board.c within the LPCOpen board library and comment out the line: #include "retarget.h, or&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;locating the file board.h and enable the line: #define DEBUG_SEMIHOSTING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-2029060866"&gt;Retargeting printf/scanf&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the printf function outputs text to the debug console using the "&lt;A _jive_internal="true" data-containerid="11529" data-containertype="14" data-objectid="389156" data-objecttype="1" href="https://community.nxp.com/thread/389156" rel="nofollow noopener noreferrer" target="_blank"&gt;semihosting&lt;/A&gt;" mechanism.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In some circumstances, this output mechanism may not be suitable for your application. Instead, you may want printf to output via an alternative communication channel such as a UART or - on Cortex-M3/M4 - the ITM channel of SWO Trace. In such cases you can retarget the appropriate portion of the bottom level of the library.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;A _jive_internal="true" data-containerid="11529" data-containertype="14" data-objectid="389028" data-objecttype="1" href="https://community.nxp.com/thread/389028" rel="nofollow noopener noreferrer" target="_blank"&gt;FAQ "How to use ITM Printf"&lt;/A&gt; provides an example of how this can be done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that when retargeting these functions, you can typically link against the "nohost" variant of the C Library, rather than the "semihost" one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--719609600"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Redlib&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To retarget Redlib's &lt;STRONG&gt;&lt;TT&gt;printf()&lt;/TT&gt;&lt;/STRONG&gt;, you need to provide your own implementations of the function &lt;TT&gt;__sys_write():&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int __sys_write(int iFileHandle, char *pcBuffer, int iLength)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of unwritten bytes if error, otherwise 0 for success&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Similarly if you want to retarget &lt;TT&gt;scanf()&lt;/TT&gt;, you need to provide your own implementations of the function &lt;STRONG&gt;&lt;TT&gt;__sys_readc():&lt;/TT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int __sys_readc(void)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns character read&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that these two functions effectively map directly onto the underlying "semihosting" operations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-1023200735"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Newlib&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To retarget &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt;, you will need to provide your own implementation of the Newlib system function &lt;TT&gt;&lt;STRONG&gt;_write():&lt;/STRONG&gt;&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 10px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int _write(int iFileHandle, char *pcBuffer, int iLength)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 10px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of unwritten bytes if error, otherwise 0 for success&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;To retarget &lt;TT&gt;&lt;STRONG&gt;scanf&lt;/STRONG&gt;&lt;/TT&gt;, you will need to provide your own implementation of the Newlib system function &lt;TT&gt;&lt;STRONG&gt;_read():&lt;/STRONG&gt;&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int _read(int iFileHandle, char *pcBuffer, int iLength) &lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of characters read, stored in pcBuffer&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;More information on the Newlib system calls can be found at:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fsourceware.org%2Fnewlib%2Flibc.html%23Syscalls" rel="nofollow noopener noreferrer" target="_blank"&gt;http://sourceware.org/newlib/libc.html#Syscalls&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 01 Apr 2016 04:46:47 GMT</pubDate>
    <dc:creator>lpcware-support</dc:creator>
    <dc:date>2016-04-01T04:46:47Z</dc:date>
    <item>
      <title>Using printf()</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE-FAQs/Using-printf/m-p/474799#M129</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H1 id="toc-hId-1904943783"&gt;Printf and semihosting&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the output from &lt;TT&gt;printf()&lt;/TT&gt; (and &lt;TT&gt;puts()&lt;/TT&gt;) will be displayed in the debugger console via the semihosting mechanism. This provides a very easy way of getting basic status information out from your application running on your target.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For &lt;TT&gt;printf()&lt;/TT&gt; to work like this, you must ensure that you are linking with a "semihost" library variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId--647213178"&gt;Redlib printf variants&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Redlib provides the following two variants of printf. Some of the LPCXpresso project wizards provide options to select which of these to use when you create a new project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-899083652"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Character vs String output&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; and &lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; functions will output the generated string at once, so that a single semihosted operation can output the string to the console of the debugger. Note that these versions of &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; /&lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; make use of &lt;TT&gt;&lt;STRONG&gt;malloc()&lt;/STRONG&gt;&lt;/TT&gt; to provide a temporary buffer on the heap in order to generate the string to be displayed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is possible to switch to using "character-by-character" versions of these functions (which do not require additional heap space) by specifying the build define "&lt;TT&gt;&lt;STRONG&gt;CR_PRINTF_CHAR&lt;/STRONG&gt;&lt;/TT&gt;" (which should be set at the project level). This can be useful, for example, if you are retargeting &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; to write out over a UART (as detailed below)- as in this case it is pointless creating a temporary buffer to store the whole string, only to then print it out over the UART one character at a time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--1653073309"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;"Integer only" vs "full" printf (including floating point)&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; routine incorporated into Redlib is much smaller than that in Newlib. Thus if code size is an issue, then always try to use Redlib if possible In addition if your application does not pass floating point numbers to printf, you can also select a "integer only" (non-floating point compatible) variant of printf. This will reduce code size further.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To enable the "integer only" printf from Redlib, define the symbol "&lt;TT&gt;&lt;STRONG&gt;CR_INTEGER_PRINTF&lt;/STRONG&gt;&lt;/TT&gt;" (at the project level).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that if you only require the display of fixed strings, then using &lt;TT&gt;&lt;STRONG&gt;puts()&lt;/STRONG&gt;&lt;/TT&gt; rather than &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt; will noticeably reduce the code size of your application.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-286250531"&gt;Printf when using LPCOpen&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you are building your application against LPCOpen, you may find that printf output does not get displayed in the LPCXpresso debug console by default. This is due to many LPCOpen board library projects by default redirecting printf to a UART output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you want to direct printf output to the debug console instead, then you will need to modify your projects so that:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Your main application project is linked against the "semihost" variant of the C library, and&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;You disable the LPCOpen board library's redirection of printf output by either:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;locating the source file board.c within the LPCOpen board library and comment out the line: #include "retarget.h, or&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;locating the file board.h and enable the line: #define DEBUG_SEMIHOSTING&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;H1 id="toc-hId-2029060866"&gt;Retargeting printf/scanf&lt;/H1&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By default, the printf function outputs text to the debug console using the "&lt;A _jive_internal="true" data-containerid="11529" data-containertype="14" data-objectid="389156" data-objecttype="1" href="https://community.nxp.com/thread/389156" rel="nofollow noopener noreferrer" target="_blank"&gt;semihosting&lt;/A&gt;" mechanism.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In some circumstances, this output mechanism may not be suitable for your application. Instead, you may want printf to output via an alternative communication channel such as a UART or - on Cortex-M3/M4 - the ITM channel of SWO Trace. In such cases you can retarget the appropriate portion of the bottom level of the library.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The &lt;A _jive_internal="true" data-containerid="11529" data-containertype="14" data-objectid="389028" data-objecttype="1" href="https://community.nxp.com/thread/389028" rel="nofollow noopener noreferrer" target="_blank"&gt;FAQ "How to use ITM Printf"&lt;/A&gt; provides an example of how this can be done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that when retargeting these functions, you can typically link against the "nohost" variant of the C Library, rather than the "semihost" one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--719609600"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Redlib&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To retarget Redlib's &lt;STRONG&gt;&lt;TT&gt;printf()&lt;/TT&gt;&lt;/STRONG&gt;, you need to provide your own implementations of the function &lt;TT&gt;__sys_write():&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int __sys_write(int iFileHandle, char *pcBuffer, int iLength)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of unwritten bytes if error, otherwise 0 for success&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Similarly if you want to retarget &lt;TT&gt;scanf()&lt;/TT&gt;, you need to provide your own implementations of the function &lt;STRONG&gt;&lt;TT&gt;__sys_readc():&lt;/TT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int __sys_readc(void)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns character read&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt; that these two functions effectively map directly onto the underlying "semihosting" operations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-1023200735"&gt;&lt;SPAN style="color: #eb7a3d;"&gt;Newlib&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To retarget &lt;TT&gt;&lt;STRONG&gt;printf()&lt;/STRONG&gt;&lt;/TT&gt;, you will need to provide your own implementation of the Newlib system function &lt;TT&gt;&lt;STRONG&gt;_write():&lt;/STRONG&gt;&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 10px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int _write(int iFileHandle, char *pcBuffer, int iLength)&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 10px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of unwritten bytes if error, otherwise 0 for success&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;To retarget &lt;TT&gt;&lt;STRONG&gt;scanf&lt;/STRONG&gt;&lt;/TT&gt;, you will need to provide your own implementation of the Newlib system function &lt;TT&gt;&lt;STRONG&gt;_read():&lt;/STRONG&gt;&lt;/TT&gt;&lt;/P&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;int _read(int iFileHandle, char *pcBuffer, int iLength) &lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="font-family: monospace, serif; font-size: 12px; color: #646464; padding-left: 30px;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;Function returns number of characters read, stored in pcBuffer&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;More information on the Newlib system calls can be found at:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fsourceware.org%2Fnewlib%2Flibc.html%23Syscalls" rel="nofollow noopener noreferrer" target="_blank"&gt;http://sourceware.org/newlib/libc.html#Syscalls&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Apr 2016 04:46:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE-FAQs/Using-printf/m-p/474799#M129</guid>
      <dc:creator>lpcware-support</dc:creator>
      <dc:date>2016-04-01T04:46:47Z</dc:date>
    </item>
  </channel>
</rss>

