📄 pm_8c-source.html
字号:
<a name="l00390"></a>00390 sm->pm_cpu_mask = 0xFFFFffff;<a name="l00391"></a>00391 sm->pm_ahb_mask = 0xFFFFffff;<a name="l00392"></a>00392 sm->pm_apba_mask = 0xFFFFffff;<a name="l00393"></a>00393 sm->pm_apbb_mask = 0xFFFFffff;<a name="l00394"></a>00394 <a name="l00395"></a>00395 <a class="code" href="pm_8c.html#88dfe542f765ac33d0eeee7d0eff486c">pm_wait_for_lock</a>(AVR32_SM_PM_ISR_MSKRDY);<a name="l00396"></a>00396 }<a name="l00397"></a>00397 <a name="l00398"></a><a class="code" href="pm_8h.html#9eeb911aac8a1d1e6bd05e3ad80f90d8">00398</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#9eeb911aac8a1d1e6bd05e3ad80f90d8">pm_read_module_frequency</a>(<span class="keywordtype">int</span> module)<a name="l00399"></a>00399 {<a name="l00400"></a>00400 <span class="keywordtype">int</span> clk, domain, divider;<a name="l00401"></a>00401 <a name="l00402"></a>00402 clk = <a class="code" href="pm_8c.html#14bd8bcf2023d7eef7fa2575fe369900">pm_read_mclk</a>();<a name="l00403"></a>00403 <a name="l00404"></a>00404 divider = <a class="code" href="pm_8c.html#0f2a943733b661e4eaf234349224886c">pm_read_clock_domain_scaler</a>(<a class="code" href="pm_8h.html#37e9895746ca50f3d86ad22f910e744c">PM_AHB_DOMAIN</a>);<a name="l00405"></a>00405 <a name="l00406"></a>00406 domain = module/32;<a name="l00407"></a>00407 <span class="keywordflow">if</span>( domain==<a class="code" href="pm_8h.html#1d81d3d60bfe377c184d6f2920459e0b">PM_APBA_DOMAIN</a>)<a name="l00408"></a>00408 divider = divider * <a class="code" href="pm_8c.html#0f2a943733b661e4eaf234349224886c">pm_read_clock_domain_scaler</a>(<a class="code" href="pm_8h.html#1d81d3d60bfe377c184d6f2920459e0b">PM_APBA_DOMAIN</a>);<a name="l00409"></a>00409 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( domain==<a class="code" href="pm_8h.html#8581f5aa9839b0f01556facfd429a105">PM_APBB_DOMAIN</a>)<a name="l00410"></a>00410 divider = divider * <a class="code" href="pm_8c.html#0f2a943733b661e4eaf234349224886c">pm_read_clock_domain_scaler</a>(<a class="code" href="pm_8h.html#8581f5aa9839b0f01556facfd429a105">PM_APBB_DOMAIN</a>);<a name="l00411"></a>00411 <span class="keywordflow">else</span><a name="l00412"></a>00412 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00413"></a>00413 <a name="l00414"></a>00414 <span class="comment">/* CHECK WHETHER THE CLOCK IS MASKED */</span><a name="l00415"></a>00415 <a name="l00416"></a>00416 <span class="keywordflow">return</span> clk/divider;<a name="l00417"></a>00417 }<a name="l00418"></a>00418 <a name="l00419"></a>00419 <span class="comment">/* Enable interrupt */</span><a name="l00420"></a><a class="code" href="pm_8h.html#0f8568eb40d8a9599ebde49ab0bda278">00420</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#0f8568eb40d8a9599ebde49ab0bda278">pm_interrupt_enable</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> source )<a name="l00421"></a>00421 {<a name="l00422"></a>00422 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00423"></a>00423 <a name="l00424"></a>00424 <span class="keywordflow">if</span>( source > (<a class="code" href="pm_8h.html#5dcfcaccba3bf44f55edb3551c022f04">PM_INT_SOURCES</a>-1) )<a name="l00425"></a>00425 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00426"></a>00426 <span class="keywordflow">else</span>{<a name="l00427"></a>00427 sm->pm_ier |= (1 << source);<a name="l00428"></a>00428 <span class="keywordflow">return</span> 0;<a name="l00429"></a>00429 }<a name="l00430"></a>00430 }<a name="l00431"></a>00431 <a name="l00432"></a>00432 <a name="l00433"></a>00433 <a name="l00434"></a>00434 <span class="comment">/* Disable interrupt*/</span><a name="l00435"></a><a class="code" href="pm_8h.html#722e55d44f9cbb606970a6c99f52a6f4">00435</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#722e55d44f9cbb606970a6c99f52a6f4">pm_interrupt_disable</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> source )<a name="l00436"></a>00436 {<a name="l00437"></a>00437 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00438"></a>00438 <a name="l00439"></a>00439 <span class="keywordflow">if</span>( source > (<a class="code" href="pm_8h.html#5dcfcaccba3bf44f55edb3551c022f04">PM_INT_SOURCES</a>-1) )<a name="l00440"></a>00440 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00441"></a>00441 <span class="keywordflow">else</span>{<a name="l00442"></a>00442 sm->pm_idr |= (1 << source);<a name="l00443"></a>00443 <span class="keywordflow">return</span> 0;<a name="l00444"></a>00444 }<a name="l00445"></a>00445 }<a name="l00446"></a>00446 <a name="l00447"></a>00447 <a name="l00448"></a>00448 <a name="l00449"></a>00449 <span class="comment">/* Status of interrupt*/</span><a name="l00450"></a><a class="code" href="pm_8h.html#20b28e164b7c9bb79db19ad3c824ccfe">00450</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#20b28e164b7c9bb79db19ad3c824ccfe">pm_interrupt_status</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> source )<a name="l00451"></a>00451 {<a name="l00452"></a>00452 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00453"></a>00453 <a name="l00454"></a>00454 <span class="keywordflow">if</span> ( source > (<a class="code" href="pm_8h.html#5dcfcaccba3bf44f55edb3551c022f04">PM_INT_SOURCES</a>-1) )<a name="l00455"></a>00455 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00456"></a>00456 <span class="keywordflow">else</span><a name="l00457"></a>00457 <span class="keywordflow">return</span> (sm->pm_isr & source)>>source;<a name="l00458"></a>00458 }<a name="l00459"></a>00459 <a name="l00460"></a>00460 <a name="l00461"></a>00461 <a name="l00462"></a>00462 <span class="comment">/* Clear interrupt */</span><a name="l00463"></a><a class="code" href="pm_8h.html#afabed3d352c08a31e65299bf82c6f14">00463</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#afabed3d352c08a31e65299bf82c6f14">pm_interrupt_clear</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> source )<a name="l00464"></a>00464 {<a name="l00465"></a>00465 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00466"></a>00466 <a name="l00467"></a>00467 <span class="keywordflow">if</span>( source > (<a class="code" href="pm_8h.html#5dcfcaccba3bf44f55edb3551c022f04">PM_INT_SOURCES</a>-1) )<a name="l00468"></a>00468 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00469"></a>00469 <span class="keywordflow">else</span>{<a name="l00470"></a>00470 sm->pm_icr |= (1 << source);<a name="l00471"></a>00471 <span class="keywordflow">return</span> 0;<a name="l00472"></a>00472 }<a name="l00473"></a>00473 }<a name="l00474"></a>00474 <a name="l00475"></a>00475 <a name="l00476"></a>00476 <a name="l00477"></a>00477 <span class="comment">/* Clear interrupt */</span><a name="l00478"></a><a class="code" href="pm_8h.html#80c6af2ba13603d8940b9ac054df89b8">00478</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#80c6af2ba13603d8940b9ac054df89b8">pm_interrupt_mask</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> source )<a name="l00479"></a>00479 {<a name="l00480"></a>00480 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00481"></a>00481 <a name="l00482"></a>00482 <span class="keywordflow">if</span>( source > (<a class="code" href="pm_8h.html#5dcfcaccba3bf44f55edb3551c022f04">PM_INT_SOURCES</a>-1) )<a name="l00483"></a>00483 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00484"></a>00484 <span class="keywordflow">else</span>{<a name="l00485"></a>00485 <span class="keywordflow">return</span> (sm->pm_ier & source ) >> source ;<a name="l00486"></a>00486 }<a name="l00487"></a>00487 }<a name="l00488"></a>00488 <a name="l00489"></a>00489 <a name="l00490"></a>00490 <a name="l00491"></a>00491 <span class="comment">/* Modify the generic clock */</span><a name="l00492"></a><a class="code" href="pm_8h.html#c36fb27df09040fa236cf2a9b2c13684">00492</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#c36fb27df09040fa236cf2a9b2c13684">pm_generic_clock_control</a>( <span class="keyword">struct</span> <a class="code" href="structgen__clk__opt__t.html">gen_clk_opt_t</a> *opt)<a name="l00493"></a>00493 {<a name="l00494"></a>00494 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00495"></a>00495 <a name="l00496"></a>00496 <span class="comment">/* Check whether div-field is larger than 8 bits */</span><a name="l00497"></a>00497 <span class="keywordflow">if</span>( opt-><a class="code" href="structgen__clk__opt__t.html#1c0f4c520fa0778b49d0f3a7217d2bc7">div</a> > 0xFF)<a name="l00498"></a>00498 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00499"></a>00499 <span class="comment">/* Check for valid single bits */</span><a name="l00500"></a>00500 <span class="keywordflow">if</span> ( ((opt-><a class="code" href="structgen__clk__opt__t.html#87c4374f358f08b475f338cbce4e6d8b">diven</a>)|(opt-><a class="code" href="structgen__clk__opt__t.html#d5fb42c07bde892e2f63099bdaca2ec0">cen</a>)|(opt-><a class="code" href="structgen__clk__opt__t.html#12ed7146381730f8cfea4ae246b00d26">pllsel</a>)|(opt-><a class="code" href="structgen__clk__opt__t.html#4d4b4915b1f64cc52d68d63ca425c2eb">oscsel</a>)) > 1)<a name="l00501"></a>00501 <span class="keywordflow">return</span> <a class="code" href="pm_8h.html#fb0c09824dd7de95fd1557e20c731400">PM_INVALID_ARGUMENT</a>;<a name="l00502"></a>00502 <span class="keywordflow">else</span><a name="l00503"></a>00503 sm->pm_gcctrl = (opt-><a class="code" href="structgen__clk__opt__t.html#1c0f4c520fa0778b49d0f3a7217d2bc7">div</a> << AVR32_SM_PM_GCCTRL_DIV_OFFSET)| \<a name="l00504"></a>00504 (opt-><a class="code" href="structgen__clk__opt__t.html#87c4374f358f08b475f338cbce4e6d8b">diven</a> << AVR32_SM_PM_GCCTRL_DIVEN_OFFSET)|\<a name="l00505"></a>00505 (opt-><a class="code" href="structgen__clk__opt__t.html#d5fb42c07bde892e2f63099bdaca2ec0">cen</a> << AVR32_SM_PM_GCCTRL_CEN_OFFSET)|\<a name="l00506"></a>00506 (opt-><a class="code" href="structgen__clk__opt__t.html#12ed7146381730f8cfea4ae246b00d26">pllsel</a> << AVR32_SM_PM_GCCTRL_PLLSEL_OFFSET)|\<a name="l00507"></a>00507 (opt-><a class="code" href="structgen__clk__opt__t.html#4d4b4915b1f64cc52d68d63ca425c2eb">oscsel</a> << AVR32_SM_PM_GCCTRL_OSCSEL_OFFSET);<a name="l00508"></a>00508 <a name="l00509"></a>00509 <span class="keywordflow">return</span> 0;<a name="l00510"></a>00510 } <span class="comment">/* End pm_generic_clock_control() */</span><a name="l00511"></a>00511 <a name="l00512"></a>00512 <span class="comment">/* RC errors */</span><a name="l00513"></a><a class="code" href="pm_8c.html#555db77a9952c4b3b3622a5552fce61e">00513</a> <span class="keywordtype">int</span> <a class="code" href="pm_8c.html#555db77a9952c4b3b3622a5552fce61e">pm_rc_errors</a>(<span class="keywordtype">void</span>)<a name="l00514"></a>00514 {<a name="l00515"></a>00515 avr32_sm_t *sm = (<span class="keywordtype">void</span> *)AVR32_SM_ADDRESS;<a name="l00516"></a>00516 <span class="comment">/* return the bitfield */</span><a name="l00517"></a>00517 <span class="keywordflow">return</span> sm->rtc_icr;<a name="l00518"></a>00518 }<a name="l00519"></a>00519 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 10 14:14:48 2007 for AVR321000 Communication with the AVR32 USART by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -