📄 pm_8c.html
字号:
<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->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->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->pm_ier = 0x7F; <span class="comment">/* enable all interrupts*/</span><a name="l00028"></a>00028 sm->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> * </td> <td class="paramname"> <em>opt</em> </td> <td> ) </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->div_enable == 1) & ((opt->divider == 0)|(opt->divider >= (1<<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->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->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->div_enable == 1) {<a name="l00258"></a>00258 new_settings = 1<<AVR32_SM_PM_CKSEL_CPUDIV;<a name="l00259"></a>00259 new_settings |= ((opt->divider)-1);<a name="l00260"></a>00260 }<a name="l00261"></a>00261 <a name="l00262"></a>00262 <span class="comment">// Error. div_enable >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->pm_cksel &= ~((AVR32_SM_PM_CKSEL_CPUDIV_MASK|AVR32_SM_PM_CKSEL_CPUSEL_MASK)<<offset);<a name="l00267"></a>00267 sm->pm_cksel |= (new_settings<<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 </td> <td class="paramname"> <em>source</em> </td> <td> ) </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->pm_mcctrl = (0 << 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->pm_mcctrl = (1 << 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> * </td> <td class="paramname"> <em>opt</em> </td> <td> ) </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->multiplier == 0) | (opt->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<<AVR32_SM_PM_PLL0_PLLCOUNT_OFFSET)|(1<<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->multiplier != 0)<a name="l00067"></a>00067 pllreg = pllreg | (((opt->multiplier) -1 ) << 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->divider != 0)<a name="l00070"></a>00070 pllreg = pllreg | (((opt->divider) - 1) << 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->oscillator <= 1)<a name="l00073"></a>00073 pllreg = pllreg | ((opt->oscillator) << AVR32_SM_PLLOSC_OFFSET);<a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -