<?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中的主题 Re: __IO what is</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577666#M23307</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by blasiis on Wed May 26 02:21:52 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: nerd62&lt;/STRONG&gt;&lt;BR /&gt;Hi blasiis,&lt;BR /&gt; &lt;BR /&gt;__IO is a preprocessor symbol which is defined to "volatile" (as rkiryanov wrote this). The "volatile" attribute tells the optimizer not to optimize too much. The content of the register may be changed by an other process from what the optimizer does not know about - so the content of the register has to be read everytime when there are made decisions which depend on the true content. When the optimizer does not know about the "volatile" attribute he may have the idea to copy the content of the IO-register into a general purpose register and make further decisions with the content of this general purpose register. This may work in one case - when you make small changes at your code it suddenly won't work. This leads e. g. to polling loops which suddenly don't terminate. I have spent a lot of time to debug such (homebrewed) errors in my last project.&lt;BR /&gt; &lt;BR /&gt;Have much fun with your LPC, nerd62 ;-)&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Therefor for&amp;nbsp; safety reasons it is best to put it in structure or similar&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 22:34:43 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T22:34:43Z</dc:date>
    <item>
      <title>__IO what is</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577663#M23304</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by blasiis on Wed May 26 00:39:25 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;LPCXpresso with LPC1758&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Sorry for my simply question, but I need to undestand the difference from&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;__IO uint32_t tx_head;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t tx_head&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tested in ram and ther'isnt difference !!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:34:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577663#M23304</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:34:41Z</dc:date>
    </item>
    <item>
      <title>Re: __IO what is</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577664#M23305</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rkiryanov on Wed May 26 01:05:12 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: blasiis&lt;/STRONG&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;__IO = volatile&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__I = volatile const&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:34:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577664#M23305</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:34:42Z</dc:date>
    </item>
    <item>
      <title>Re: __IO what is</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577665#M23306</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by nerd62 on Wed May 26 01:23:37 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi blasiis,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__IO is a preprocessor symbol which is defined to "volatile" (as rkiryanov wrote this). The "volatile" attribute tells the optimizer not to optimize too much. The content of the register may be changed by an other process from what the optimizer does not know about - so the content of the register has to be read everytime when there are made decisions which depend on the true content. When the optimizer does not know about the "volatile" attribute he may have the idea to copy the content of the IO-register into a general purpose register and make further decisions with the content of this general purpose register. This may work in one case - when you make small changes at your code it suddenly won't work. This leads e. g. to polling loops which suddenly don't terminate. I have spent a lot of time to debug such (homebrewed) errors in my last project.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have much fun with your LPC, nerd62 ;-)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:34:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577665#M23306</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:34:43Z</dc:date>
    </item>
    <item>
      <title>Re: __IO what is</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577666#M23307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by blasiis on Wed May 26 02:21:52 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: nerd62&lt;/STRONG&gt;&lt;BR /&gt;Hi blasiis,&lt;BR /&gt; &lt;BR /&gt;__IO is a preprocessor symbol which is defined to "volatile" (as rkiryanov wrote this). The "volatile" attribute tells the optimizer not to optimize too much. The content of the register may be changed by an other process from what the optimizer does not know about - so the content of the register has to be read everytime when there are made decisions which depend on the true content. When the optimizer does not know about the "volatile" attribute he may have the idea to copy the content of the IO-register into a general purpose register and make further decisions with the content of this general purpose register. This may work in one case - when you make small changes at your code it suddenly won't work. This leads e. g. to polling loops which suddenly don't terminate. I have spent a lot of time to debug such (homebrewed) errors in my last project.&lt;BR /&gt; &lt;BR /&gt;Have much fun with your LPC, nerd62 ;-)&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Therefor for&amp;nbsp; safety reasons it is best to put it in structure or similar&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:34:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/IO-what-is/m-p/577666#M23307</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:34:43Z</dc:date>
    </item>
  </channel>
</rss>

