⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pm_8c.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00019"></a>00019         status |= <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_MSKRDY);<a name="l00020"></a>00020 <a name="l00021"></a>00021         sm-&gt;pm_apba_mask = disable_clock_mask;<a name="l00022"></a>00022         status |= <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_MSKRDY);<a name="l00023"></a>00023 <a name="l00024"></a>00024         sm-&gt;pm_apbb_mask = disable_clock_mask;<a name="l00025"></a>00025         status |= <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_MSKRDY);<a name="l00026"></a>00026 <a name="l00027"></a>00027         sm-&gt;pm_ier = 0x7F; <span class="comment">/* enable all interrupts*/</span><a name="l00028"></a>00028         sm-&gt;pm_icr |= 0x7F; <span class="comment">/* clear all interrupts */</span><a name="l00029"></a>00029 <a name="l00030"></a>00030         <span class="keywordflow">return</span> status;<a name="l00031"></a>00031 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="c98e7a8b718e6eba0c220fbedfc4ce9e"></a><!-- doxytag: member="pm.c::pm_set_clock_domain_scaler" ref="c98e7a8b718e6eba0c220fbedfc4ce9e" args="(volatile struct clk_sel_opt_t *opt)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int pm_set_clock_domain_scaler           </td>          <td>(</td>          <td class="paramtype">volatile struct <a class="el" href="structclk__sel__opt__t.html">clk_sel_opt_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p><p>Definition at line <a class="el" href="pm_8c-source.html#l00223">223</a> of file <a class="el" href="pm_8c-source.html">pm.c</a>.<p>References <a class="el" href="pm_8h-source.html#l00042">PM_AHB_DOMAIN</a>, <a class="el" href="pm_8h-source.html#l00057">PM_APBA_DOMAIN</a>, <a class="el" href="pm_8h-source.html#l00078">PM_APBB_DOMAIN</a>, <a class="el" href="pm_8h-source.html#l00037">PM_CPU_DOMAIN</a>, <a class="el" href="pm_8h-source.html#l00018">PM_INVALID_ARGUMENT</a>, <a class="el" href="pm_8h-source.html#l00017">PM_SUCCESS</a>, and <a class="el" href="pm_8c-source.html#l00033">pm_wait_for_lock()</a>.<p>Referenced by <a class="el" href="usart__example2_8c-source.html#l00022">main()</a>.<div class="fragment"><pre class="fragment"><a name="l00224"></a>00224 {<a name="l00225"></a>00225         <span class="keyword">volatile</span> avr32_sm_t *sm = (<span class="keywordtype">void</span> *) AVR32_SM_ADDRESS;<a name="l00226"></a>00226         <span class="keywordtype">int</span> offset,new_settings;<a name="l00227"></a>00227 <a name="l00228"></a>00228         <span class="comment">// Check for invalid division factor</span><a name="l00229"></a>00229         <span class="keywordflow">if</span>( (opt-&gt;div_enable == 1) &amp; ((opt-&gt;divider == 0)|(opt-&gt;divider &gt;= (1&lt;&lt;AVR32_SM_PM_CKSEL_CPUSEL_SIZE))) )<a name="l00230"></a>00230                 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00231"></a>00231 <a name="l00232"></a>00232         <span class="comment">// Get offset for bitfields</span><a name="l00233"></a>00233         <span class="keywordflow">switch</span> (opt-&gt;clock){<a name="l00234"></a>00234                 <span class="keywordflow">case</span> <a class="code" href="pm_8h.html#8581f5aa9839b0f01556facfd429a105">PM_APBB_DOMAIN</a>:<a name="l00235"></a>00235                         offset = AVR32_SM_PM_CKSEL_APBBSEL_OFFSET;<a name="l00236"></a>00236                         <span class="keywordflow">break</span>;<a name="l00237"></a>00237                 <span class="keywordflow">case</span> <a class="code" href="pm_8h.html#1d81d3d60bfe377c184d6f2920459e0b">PM_APBA_DOMAIN</a>:<a name="l00238"></a>00238                         offset = AVR32_SM_PM_CKSEL_APBASEL_OFFSET;<a name="l00239"></a>00239                         <span class="keywordflow">break</span>;<a name="l00240"></a>00240                 <span class="keywordflow">case</span> <a class="code" href="pm_8h.html#37e9895746ca50f3d86ad22f910e744c">PM_AHB_DOMAIN</a>:<a name="l00241"></a>00241                         offset = AVR32_SM_PM_CKSEL_AHBSEL_OFFSET;<a name="l00242"></a>00242                         <span class="keywordflow">break</span>;<a name="l00243"></a>00243                 <span class="keywordflow">case</span> <a class="code" href="pm_8h.html#660a07fbf3323532394666f5b39bda94">PM_CPU_DOMAIN</a>:<a name="l00244"></a>00244                         offset = AVR32_SM_PM_CKSEL_CPUSEL_OFFSET;<a name="l00245"></a>00245                         <span class="keywordflow">break</span>;<a name="l00246"></a>00246                 <span class="keywordflow">default</span>:<a name="l00247"></a>00247                         <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00248"></a>00248                         <span class="keywordflow">break</span>;<a name="l00249"></a>00249         } <span class="comment">/* end switch */</span><a name="l00250"></a>00250 <a name="l00251"></a>00251         <span class="comment">// Check whether division should be disabled</span><a name="l00252"></a>00252         <span class="keywordflow">if</span>(opt-&gt;div_enable == 0){<a name="l00253"></a>00253                 new_settings = 0x00;<a name="l00254"></a>00254         }<a name="l00255"></a>00255 <a name="l00256"></a>00256         <span class="comment">// Division is to be used</span><a name="l00257"></a>00257         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opt-&gt;div_enable == 1) {<a name="l00258"></a>00258                 new_settings = 1&lt;&lt;AVR32_SM_PM_CKSEL_CPUDIV;<a name="l00259"></a>00259                 new_settings |= ((opt-&gt;divider)-1);<a name="l00260"></a>00260         }<a name="l00261"></a>00261 <a name="l00262"></a>00262         <span class="comment">// Error. div_enable &gt;1</span><a name="l00263"></a>00263         <span class="keywordflow">else</span><a name="l00264"></a>00264                 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00265"></a>00265 <a name="l00266"></a>00266         sm-&gt;pm_cksel &amp;=  ~((AVR32_SM_PM_CKSEL_CPUDIV_MASK|AVR32_SM_PM_CKSEL_CPUSEL_MASK)&lt;&lt;offset);<a name="l00267"></a>00267     sm-&gt;pm_cksel |= (new_settings&lt;&lt;offset);<a name="l00268"></a>00268 <a name="l00269"></a>00269         <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_CKRDY);<a name="l00270"></a>00270 <a name="l00271"></a>00271         <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#ddf49f5fed3274da72c23555bd623a3a">PM_SUCCESS</a>;<a name="l00272"></a>00272 <a name="l00273"></a>00273 } <span class="comment">/* End pm_set_clock_domain_scaler() */</span></pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="5ee9297ef8a710f6f1c7b3f60d6f7369"></a><!-- doxytag: member="pm.c::pm_set_mclk_source" ref="5ee9297ef8a710f6f1c7b3f60d6f7369" args="(unsigned int source)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int pm_set_mclk_source           </td>          <td>(</td>          <td class="paramtype">unsigned int&nbsp;</td>          <td class="paramname"> <em>source</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p><p>Definition at line <a class="el" href="pm_8c-source.html#l00135">135</a> of file <a class="el" href="pm_8c-source.html">pm.c</a>.<p>References <a class="el" href="pm_8h-source.html#l00018">PM_INVALID_ARGUMENT</a>, <a class="el" href="pm_8h-source.html#l00011">PM_OSC0</a>, <a class="el" href="pm_8h-source.html#l00014">PM_PLL0</a>, and <a class="el" href="pm_8c-source.html#l00033">pm_wait_for_lock()</a>.<p>Referenced by <a class="el" href="pm__example_8c-source.html#l00004">main()</a>, <a class="el" href="pm_8c-source.html#l00004">pm_reset()</a>, and <a class="el" href="pm_8c-source.html#l00051">pm_set_pll()</a>.<div class="fragment"><pre class="fragment"><a name="l00136"></a>00136 {<a name="l00137"></a>00137         <span class="keyword">volatile</span> avr32_sm_t *sm = (<span class="keywordtype">void</span> *) AVR32_SM_ADDRESS;<a name="l00138"></a>00138 <a name="l00139"></a>00139         <span class="keywordflow">if</span>( (source == <a class="code" href="pm_8h.html#b6ed62883d39ae18a209e0a3dbfbeb40">PM_OSC0</a>) ){<a name="l00140"></a>00140                 sm-&gt;pm_mcctrl = (0 &lt;&lt; AVR32_SM_PLLSEL_OFFSET);<a name="l00141"></a>00141         }<a name="l00142"></a>00142         <span class="keywordflow">else</span> <span class="keywordflow">if</span>( source ==<a class="code" href="pm_8h.html#b496d79f3a521e4335d24be892bf085a">PM_PLL0</a> ){<a name="l00143"></a>00143                 sm-&gt;pm_mcctrl = (1 &lt;&lt; AVR32_SM_PLLSEL_OFFSET);<a name="l00144"></a>00144         }<a name="l00145"></a>00145         <span class="keywordflow">else</span><a name="l00146"></a>00146                 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00147"></a>00147 <a name="l00148"></a>00148         <span class="keywordflow">return</span> <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_CKRDY);<a name="l00149"></a>00149 <a name="l00150"></a>00150 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="7fc09cb1d5ede1dea772f8b03ee154be"></a><!-- doxytag: member="pm.c::pm_set_pll" ref="7fc09cb1d5ede1dea772f8b03ee154be" args="(volatile struct pll_opt_t *opt)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int pm_set_pll           </td>          <td>(</td>          <td class="paramtype">volatile struct <a class="el" href="structpll__opt__t.html">pll_opt_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p><p>Definition at line <a class="el" href="pm_8c-source.html#l00051">51</a> of file <a class="el" href="pm_8c-source.html">pm.c</a>.<p>References <a class="el" href="pm_8h-source.html#l00018">PM_INVALID_ARGUMENT</a>, <a class="el" href="pm_8h-source.html#l00011">PM_OSC0</a>, <a class="el" href="pm_8h-source.html#l00014">PM_PLL0</a>, <a class="el" href="pm_8h-source.html#l00015">PM_PLL1</a>, <a class="el" href="pm_8c-source.html#l00155">pm_read_mclk_source()</a>, <a class="el" href="pm_8c-source.html#l00135">pm_set_mclk_source()</a>, and <a class="el" href="pm_8c-source.html#l00033">pm_wait_for_lock()</a>.<p>Referenced by <a class="el" href="pm__example_8c-source.html#l00004">main()</a>.<div class="fragment"><pre class="fragment"><a name="l00052"></a>00052 {<a name="l00053"></a>00053         <span class="keyword">volatile</span> avr32_sm_t *sm = (<span class="keywordtype">void</span> *) AVR32_SM_ADDRESS;<a name="l00054"></a>00054         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pllreg, lockbit;<a name="l00055"></a>00055 <a name="l00056"></a>00056         <span class="comment">/* Ensure that mclk is driven by the current pll */</span><a name="l00057"></a>00057         <span class="keywordflow">if</span>(<a class="code" href="pm_8c.html#e8ea9de644b71bb92ab7d384f298d1d7">pm_read_mclk_source</a>()==<a class="code" href="pm_8h.html#b496d79f3a521e4335d24be892bf085a">PM_PLL0</a>)<a name="l00058"></a>00058                 <a class="code" href="pm_8c.html#5ee9297ef8a710f6f1c7b3f60d6f7369">pm_set_mclk_source</a>(<a class="code" href="pm_8h.html#b6ed62883d39ae18a209e0a3dbfbeb40">PM_OSC0</a>);<a name="l00059"></a>00059 <a name="l00060"></a>00060         <span class="keywordflow">if</span> ( (opt-&gt;multiplier == 0) | (opt-&gt;divider == 0) )<a name="l00061"></a>00061                 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00062"></a>00062 <a name="l00063"></a>00063         pllreg = (1&lt;&lt;AVR32_SM_PM_PLL0_PLLCOUNT_OFFSET)|(1&lt;&lt;AVR32_SM_PM_PLL0_PLLEN_OFFSET);<a name="l00064"></a>00064 <a name="l00065"></a>00065         <span class="comment">// add multiplier</span><a name="l00066"></a>00066         <span class="keywordflow">if</span> (opt-&gt;multiplier != 0)<a name="l00067"></a>00067         pllreg = pllreg | (((opt-&gt;multiplier) -1 ) &lt;&lt; AVR32_SM_PLLMUL_OFFSET);<a name="l00068"></a>00068         <span class="comment">// add divider</span><a name="l00069"></a>00069         <span class="keywordflow">if</span>(opt-&gt;divider != 0)<a name="l00070"></a>00070         pllreg = pllreg | (((opt-&gt;divider) - 1) &lt;&lt; AVR32_SM_PLLDIV_OFFSET);<a name="l00071"></a>00071         <span class="comment">// select oscillator</span><a name="l00072"></a>00072         <span class="keywordflow">if</span>(opt-&gt;oscillator &lt;= 1)<a name="l00073"></a>00073         pllreg = pllreg | ((opt-&gt;oscillator) &lt;&lt; AVR32_SM_PLLOSC_OFFSET);<a 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -