<?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: Software timer</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575153#M22178</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Thu Jun 03 14:50:56 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: micrio&lt;/STRONG&gt;&lt;BR /&gt;Do you have a high resolution delay routine for M0 Cortex?&lt;BR /&gt; &lt;BR /&gt;subs r3, #1&lt;BR /&gt; &lt;BR /&gt;This is not supported in Thumb16.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I haven't actually tried this out with the tools, but I suspect that you need to add [I].syntax unified / divided[/I] around the assembler code in order to get it to build. For more info, see:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?p=1779&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in particular, &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showpost.php?p=1766&amp;amp;postcount=2&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 22:31:59 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T22:31:59Z</dc:date>
    <item>
      <title>Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575147#M22172</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bhallett on Thu Jun 03 02:03:43 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am looking to create a software timer that does not use any of the timers supplied in the LPC1342 microcontroller. I am thinking of reading a ram, rom, or flash location a number of times in order to make up a specific time period (i.e. using the access time of these devices). Has anyone achieved this under the ARM/Thumb2 environment programmed in C?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Barry&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575147#M22172</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:55Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575148#M22173</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by micrio on Thu Jun 03 08:32:01 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want a short delay you can use a NOP instruction. You can&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;code it this way in C:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]asm[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"NOP"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);[/SIZE][SIZE=2][COLOR=#3f7f5f][/LEFT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/COLOR][/SIZE]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575148#M22173</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:56Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575149#M22174</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bhallett on Thu Jun 03 09:24:56 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the info micrio&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I where to loop a nop x number of times could I achieve a longer delay?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also, does anyone know where I can find the assembly instruction execution cycle times ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Barry&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575149#M22174</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:56Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575150#M22175</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by domen on Thu Jun 03 10:10:09 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Check out:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;arm cortex-m3 technical reference manual&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;arm architecture v7m reference manual&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575150#M22175</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:57Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575151#M22176</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_USA on Thu Jun 03 13:40:22 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: bhallett&lt;/STRONG&gt;&lt;BR /&gt;Hello all,&lt;BR /&gt;&lt;BR /&gt;I am looking to create a software timer that does not use any of the timers supplied in the LPC1342 microcontroller. I am thinking of reading a ram, rom, or flash location a number of times in order to make up a specific time period (i.e. using the access time of these devices). Has anyone achieved this under the ARM/Thumb2 environment programmed in C?&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;Barry&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is nearly impossible to create an accurate delay loop in C that is stable over changing compiler versions and optimization settings.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This code may be helpful for shorter time delays. For longer time delays, maybe you could use the SysTick timer built into the Cortex M0/M3 core. It is independent from the CT16B0/1 and CT32B0/1 timers. Using the SysTick timer, if you set up a 10 mS interrupt and a counter, you could go into sleep mode and save power while waiting.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Microsecond delay loop-&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void DelayuS(uint32_t uS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t CyclestoLoops;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops = SystemCoreClock;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(CyclestoLoops &amp;gt;= 2000000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops /= 1000000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops *= uS;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops *= uS;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops /= 1000000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(CyclestoLoops &amp;lt;= 100)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops -= 100; // cycle count for entry/exit 100? should be measured&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CyclestoLoops /= 4; // cycle count per iteration- should be 4 on Cortex M0/M3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!CyclestoLoops)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Delay loop for Cortex M3 thumb2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm volatile (&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load loop count to register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp; r3, %[loops]\n"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // loop start- subtract 1 from r3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "loop: subs r3, #1\n"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // test for zero, loop if not&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bne loop\n\n"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : // No output registers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : [loops] "r" (CyclestoLoops) // Input registers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : "r3" // clobbered registers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575151#M22176</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:57Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575152#M22177</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by micrio on Thu Jun 03 14:34:06 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have a high resolution delay routine for M0 Cortex?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;subs r3, #1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This is not supported in Thumb16.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575152#M22177</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:58Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575153#M22178</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Thu Jun 03 14:50:56 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: micrio&lt;/STRONG&gt;&lt;BR /&gt;Do you have a high resolution delay routine for M0 Cortex?&lt;BR /&gt; &lt;BR /&gt;subs r3, #1&lt;BR /&gt; &lt;BR /&gt;This is not supported in Thumb16.&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I haven't actually tried this out with the tools, but I suspect that you need to add [I].syntax unified / divided[/I] around the assembler code in order to get it to build. For more info, see:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?p=1779&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in particular, &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showpost.php?p=1766&amp;amp;postcount=2&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:31:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575153#M22178</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:31:59Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575154#M22179</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by micrio on Thu Jun 03 16:32:52 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem is with the "subs". The last "s" means update the CPU status flags. In M3 processors updating the status flags is optional, in M0 processors it is not. Thus "sub" works just fine.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:32:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575154#M22179</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:32:00Z</dc:date>
    </item>
    <item>
      <title>Re: Software timer</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575155#M22180</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by xinbadaz on Thu Aug 11 23:34:35 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;the delay function realy helps a lot.:)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;but i found that after i build the program using [B][COLOR=Red]Realse Mode[/COLOR][/B], and the DelayuS() actually takes twice longer.:confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i wonder whether i can turn off the optimization, just for the DelayuS()???&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:32:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Software-timer/m-p/575155#M22180</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:32:00Z</dc:date>
    </item>
  </channel>
</rss>

