<?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: LPC11 SystemInit() clock switching query</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC11-SystemInit-clock-switching-query/m-p/529743#M1649</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by push2eject on Sat Aug 04 16:26:17 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I received feedback on this from NXP via my FAE. The initial writes to '1' (lines marked A below) are not really needed, they were just 'making sure', but the wait loops (lines marked B) are required to ensure a fast running CPU doesn't get ahead of the SYSCON hardware.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[FONT=Courier New][/FONT]*** IN FILE system_LPC11xx.c ***&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void SystemInit (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;PDRUNCFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= ~(1 &amp;lt;&amp;lt; 5);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSOSCCTRL&amp;nbsp;&amp;nbsp;&amp;nbsp; = SYSOSCCTRL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for (i = 0; i &amp;lt; 200; i++) __NOP();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKSEL&amp;nbsp; = SYSPLLCLKSEL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while (!(LPC_SYSCON-&amp;gt;SYSPLLCLKUEN &amp;amp; 0x01));&amp;nbsp;&amp;nbsp; // B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKSEL&amp;nbsp;&amp;nbsp;&amp;nbsp; = MAINCLKSEL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while (!(LPC_SYSCON-&amp;gt;MAINCLKUEN &amp;amp; 0x01));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}[/FONT]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 01:33:39 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:33:39Z</dc:date>
    <item>
      <title>LPC11 SystemInit() clock switching query</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC11-SystemInit-clock-switching-query/m-p/529742#M1648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by push2eject on Wed Jul 18 03:18:45 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all, my first post here :-)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a couple of questions, both related to SystemInit() in system_LPC11xx.c, which appears to have been written by ARM.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. When switching clock sources, the xUEN bit is written 1 then 0 then 1. My understanding from the LPC11Cxx User Manual is that it is only necessary to write 0 then 1. Why the preceeding write to 1 in the start-up code?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. After writing xUEN to 1,0,1; there is a loop waiting for the xUEN bit to be set. But this bit was just set as described above. Nowhere in the User Manual or datasheet can I find anything about having to wait for this bit to become set (unlike the PLL lock status).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Am I missing something important about changing clock sources?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Or is the ARM startup code a bit crufty?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kevin.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:33:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC11-SystemInit-clock-switching-query/m-p/529742#M1648</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:33:38Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11 SystemInit() clock switching query</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC11-SystemInit-clock-switching-query/m-p/529743#M1649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by push2eject on Sat Aug 04 16:26:17 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I received feedback on this from NXP via my FAE. The initial writes to '1' (lines marked A below) are not really needed, they were just 'making sure', but the wait loops (lines marked B) are required to ensure a fast running CPU doesn't get ahead of the SYSCON hardware.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[FONT=Courier New][/FONT]*** IN FILE system_LPC11xx.c ***&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;void SystemInit (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;PDRUNCFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= ~(1 &amp;lt;&amp;lt; 5);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSOSCCTRL&amp;nbsp;&amp;nbsp;&amp;nbsp; = SYSOSCCTRL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for (i = 0; i &amp;lt; 200; i++) __NOP();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKSEL&amp;nbsp; = SYSPLLCLKSEL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSPLLCLKUEN&amp;nbsp; = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while (!(LPC_SYSCON-&amp;gt;SYSPLLCLKUEN &amp;amp; 0x01));&amp;nbsp;&amp;nbsp; // B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKSEL&amp;nbsp;&amp;nbsp;&amp;nbsp; = MAINCLKSEL_Val;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // A&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;MAINCLKUEN&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while (!(LPC_SYSCON-&amp;gt;MAINCLKUEN &amp;amp; 0x01));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // B&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[...]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}[/FONT]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:33:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC11-SystemInit-clock-switching-query/m-p/529743#M1649</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:33:39Z</dc:date>
    </item>
  </channel>
</rss>

