📄 testsuite_2bravo__validation_2pdc_2usart_8c.html
字号:
<td class="paramname"> <em>baudrate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long </td> <td class="paramname"> <em>cpuHz</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [static]</code></td> </tr> </table></div><div class="memdoc"><p>This function will calculate a clock divider(CD) and fractional part(FP) that gets the usart as close to a wanted baudrate as possible. <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>usart</em> </td><td>base address of the usart </td></tr> <tr><td valign="top"></td><td valign="top"><em>baudrate</em> </td><td>wanted baudrate </td></tr> <tr><td valign="top"></td><td valign="top"><em>cpuHz</em> </td><td>frequency of the selected clock</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>status </dd></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>USART_OK</em> </td><td>on success </td></tr> <tr><td valign="top"></td><td valign="top"><em>USART_ERROR_ARGUMENT</em> </td><td>if wanted baudrate is impossible with given clockspeed </td></tr> </table></dl><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00065">65</a> of file <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00033">USART_ERROR_ARGUMENT</a>, and <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00028">USART_OK</a>.<p>Referenced by <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00120">usart_init2()</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00280">usart_init_iso7816()</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00095">usart_init_rs232()</a>.<div class="fragment"><pre class="fragment"><a name="l00068"></a>00068 {<a name="l00069"></a>00069 <span class="keywordtype">int</span> cd, fp; <span class="comment">/* clock divider and fractional part */</span><a name="l00070"></a>00070 <a name="l00071"></a>00071 <span class="comment">/*</span><a name="l00072"></a>00072 <span class="comment"> * ** BAUDRATE CALCULATION **</span><a name="l00073"></a>00073 <span class="comment"> *</span><a name="l00074"></a>00074 <span class="comment"> * selected clock selected clock</span><a name="l00075"></a>00075 <span class="comment"> * baudrate = ---------------- or baudrate = ----------------</span><a name="l00076"></a>00076 <span class="comment"> * 16 x (CD + FP/8) 8 x (CD + FP/8)</span><a name="l00077"></a>00077 <span class="comment"> *</span><a name="l00078"></a>00078 <span class="comment"> * (with 16x oversampling) (with 8x oversampling)</span><a name="l00079"></a>00079 <span class="comment"> */</span><a name="l00080"></a>00080 <span class="keywordflow">if</span>( <a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a> > (cpuHz/16) ) {<a name="l00081"></a>00081 <span class="comment">/* use 8x oversampling */</span><a name="l00082"></a>00082 usart->mr |= (1<<AVR32_USART_MR_OVER_OFFSET);<a name="l00083"></a>00083 cd = cpuHz / ( 8 * <a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a> );<a name="l00084"></a>00084 <a name="l00085"></a>00085 <span class="keywordflow">if</span>( cd < 2 ) {<a name="l00086"></a>00086 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00087"></a>00087 }<a name="l00088"></a>00088 <a name="l00089"></a>00089 fp = cpuHz / <a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a> - 8 * cd;<a name="l00090"></a>00090 usart->brgr = (cd << AVR32_USART_BRGR_CD_OFFSET);<a name="l00091"></a>00091 } <span class="keywordflow">else</span> {<a name="l00092"></a>00092 <span class="comment">/* use 16x oversampling */</span><a name="l00093"></a>00093 usart->mr &= ~(1<<AVR32_USART_MR_OVER_OFFSET);<a name="l00094"></a>00094 cd = cpuHz / ( 16 * <a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a> );<a name="l00095"></a>00095 <a name="l00096"></a>00096 <span class="keywordflow">if</span>( cd > 65535 ) {<a name="l00097"></a>00097 <span class="comment">/* wanted baudrate is too low */</span><a name="l00098"></a>00098 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00099"></a>00099 }<a name="l00100"></a>00100 <a name="l00101"></a>00101 fp = cpuHz / ( 2 * <a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a> ) - 8 * cd;<a name="l00102"></a>00102 usart->brgr = (cd << AVR32_USART_BRGR_CD_OFFSET);<a name="l00103"></a>00103 }<a name="l00104"></a>00104 <a name="l00105"></a>00105 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#2067a9071b47751aad8456bddf70b913">USART_OK</a>;<a name="l00106"></a>00106 }</pre></div><p></div></div><p><a class="anchor" name="2762980365c2aadfa3170a622c71b6cf"></a><!-- doxytag: member="usart.c::usart_writeLine" ref="2762980365c2aadfa3170a622c71b6cf" args="(volatile avr32_usart_t *usart, char *string)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_writeLine </td> <td>(</td> <td class="paramtype">volatile avr32_usart_t * </td> <td class="paramname"> <em>usart</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>string</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>write one character string to the usart <p><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>usart</em> </td><td>base address of the usart </td></tr> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>pointer to an array of chars</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>status </dd></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>USART_OK</em> </td><td>on success </td></tr> <tr><td valign="top"></td><td valign="top"><em>USART_TX_BUSY</em> </td><td>on timeout </td></tr> </table></dl><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00218">218</a> of file <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00028">USART_OK</a>, and <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00191">usart_putchar()</a>.<div class="fragment"><pre class="fragment"><a name="l00219"></a>00219 {<a name="l00220"></a>00220 <span class="keywordtype">int</span> retVal = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#2067a9071b47751aad8456bddf70b913">USART_OK</a>;<a name="l00221"></a>00221 <a name="l00222"></a>00222 <span class="keywordflow">while</span>( *<a class="code" href="pdc__example_8c.html#ed1cfb225a5fb77461e7972691e68a72">string</a> != <span class="charliteral">'\0'</span> ) {<a name="l00223"></a>00223 retVal = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#d8d5a1b7705f01b3ace3de0948930600">usart_putchar</a>( usart, *<a class="code" href="pdc__example_8c.html#ed1cfb225a5fb77461e7972691e68a72">string</a>++ );<a name="l00224"></a>00224 }<a name="l00225"></a>00225 <a name="l00226"></a>00226 <span class="keywordflow">if</span>( retVal != <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#2067a9071b47751aad8456bddf70b913">USART_OK</a> ) {<a name="l00227"></a>00227 <span class="keywordflow">return</span> retVal;<a name="l00228"></a>00228 }<a name="l00229"></a>00229 <a name="l00230"></a>00230 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#2067a9071b47751aad8456bddf70b913">USART_OK</a>;<a name="l00231"></a>00231 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><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 + -