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

📄 testsuite_2bravo__validation_2pdc_2usart_8c.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 3 页
字号:
          <td class="paramname"> <em>baudrate</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">long&nbsp;</td>          <td class="paramname"> <em>cpuHz</em></td><td>&nbsp;</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>&nbsp;</td><td>base address of the usart </td></tr>    <tr><td valign="top"></td><td valign="top"><em>baudrate</em>&nbsp;</td><td>wanted baudrate </td></tr>    <tr><td valign="top"></td><td valign="top"><em>cpuHz</em>&nbsp;</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>&nbsp;</td><td>on success </td></tr>    <tr><td valign="top"></td><td valign="top"><em>USART_ERROR_ARGUMENT</em>&nbsp;</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> &gt; (cpuHz/16) ) {<a name="l00081"></a>00081                 <span class="comment">/* use 8x oversampling */</span><a name="l00082"></a>00082                 usart-&gt;mr |= (1&lt;&lt;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 &lt; 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-&gt;brgr = (cd &lt;&lt; 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-&gt;mr &amp;= ~(1&lt;&lt;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 &gt; 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-&gt;brgr = (cd &lt;&lt; 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 *&nbsp;</td>          <td class="paramname"> <em>usart</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">char *&nbsp;</td>          <td class="paramname"> <em>string</em></td><td>&nbsp;</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>&nbsp;</td><td>base address of the usart </td></tr>    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</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>&nbsp;</td><td>on success </td></tr>    <tr><td valign="top"></td><td valign="top"><em>USART_TX_BUSY</em>&nbsp;</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&nbsp;<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 + -