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

📄 usart_8c.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 5 页
字号:
        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">int&nbsp;</td>          <td class="paramname"> <em>t</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">const long&nbsp;</td>          <td class="paramname"> <em>cpu_hz</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><p>Definition at line <a class="el" href="usart_8c-source.html#l00333">333</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8h-source.html#l00148">iso7816_options_t::bit_order</a>, <a class="el" href="usart_8h-source.html#l00136">iso7816_options_t::dis_suc_nack</a>, <a class="el" href="usart_8h-source.html#l00119">iso7816_options_t::fidi_ratio</a>, <a class="el" href="usart_8h-source.html#l00128">iso7816_options_t::inhibit_nack</a>, <a class="el" href="usart_8h-source.html#l00113">iso7816_options_t::iso7816_hz</a>, <a class="el" href="usart_8h-source.html#l00141">iso7816_options_t::max_iterations</a>, <a class="el" href="usart_8h-source.html#l00258">USART_INVALID_INPUT</a>, <a class="el" href="usart_8h-source.html#l00298">USART_MODE_ISO7816_T0</a>, <a class="el" href="usart_8h-source.html#l00300">USART_MODE_ISO7816_T1</a>, <a class="el" href="usart_8c-source.html#l00070">usart_reset()</a>, <a class="el" href="usart_8c-source.html#l00105">usart_set_baudrate()</a>, and <a class="el" href="usart_8h-source.html#l00253">USART_SUCCESS</a>.<div class="fragment"><pre class="fragment"><a name="l00334"></a>00334 {<a name="l00335"></a>00335         <span class="keywordtype">int</span> retval;<a name="l00336"></a>00336 <a name="l00337"></a>00337         <span class="comment">/* Reset the usart and shutdown RX and TX */</span><a name="l00338"></a>00338         <a class="code" href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2">usart_reset</a>(usart);<a name="l00339"></a>00339 <a name="l00340"></a>00340         <span class="keywordflow">if</span> (opt == 0)<a name="l00341"></a>00341                 <span class="comment">/* Null pointer */</span><a name="l00342"></a>00342                 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00343"></a>00343 <a name="l00344"></a>00344         <span class="comment">/* Don't care about charlength, parity or channelmode; All these fields</span><a name="l00345"></a>00345 <span class="comment">           are ignored in iso7816 mode. 8bit characters and even parity is always</span><a name="l00346"></a>00346 <span class="comment">           used */</span><a name="l00347"></a>00347 <a name="l00348"></a>00348         <span class="keywordflow">if</span> (t == 0)<a name="l00349"></a>00349         {<a name="l00350"></a>00350                 <span class="comment">/* Set USART mode to ISO7816, T=0 */</span><a name="l00351"></a>00351                 <span class="comment">/* The T=0 protocol always use 2 stop bits */</span><a name="l00352"></a>00352                 usart-&gt;mr = (<a class="code" href="usart_8h.html#af44f2a4560d84b228624189aad26d5e">USART_MODE_ISO7816_T0</a> &lt;&lt; AVR32_USART_MR_MODE_OFFSET) |<a name="l00353"></a>00353                             (2 &lt;&lt; AVR32_USART_MR_NBSTOP_OFFSET) |<a name="l00354"></a>00354                             (opt-&gt;<a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> &lt;&lt; AVR32_USART_MR_MSBF_OFFSET); <span class="comment">/* Allow MSBF in T=0 */</span><a name="l00355"></a>00355         }<a name="l00356"></a>00356         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == 1)<a name="l00357"></a>00357         {<a name="l00358"></a>00358                 <span class="comment">/* Only LSB first in the T=1 protocol */</span><a name="l00359"></a>00359                 <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structiso7816__options__t.html#96af893cd6275fd35a063a235f489a82">bit_order</a> != 0)<a name="l00360"></a>00360                         <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00361"></a>00361                 <span class="comment">/* max_iterations field is only used in T=0 mode */</span><a name="l00362"></a>00362                 <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> != 0)<a name="l00363"></a>00363                         <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00364"></a>00364                 <span class="comment">/* Set USART mode to ISO7816, T=1 */</span><a name="l00365"></a>00365                 usart-&gt;mr = (<a class="code" href="usart_8h.html#20cc4cd0b851232cd6b3680713792a44">USART_MODE_ISO7816_T1</a> &lt;&lt; AVR32_USART_MR_MODE_OFFSET);<a name="l00366"></a>00366                 <span class="comment">/* The T=1 protocol always use 1 stop bit (no change needed) */</span><a name="l00367"></a>00367         }<a name="l00368"></a>00368         <span class="keywordflow">else</span><a name="l00369"></a>00369                 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00370"></a>00370 <a name="l00371"></a>00371         <span class="keywordflow">if</span> ((retval = <a class="code" href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7">usart_set_baudrate</a>(usart, opt-&gt;<a class="code" href="structiso7816__options__t.html#6670bdcae159decd3ff5c00f6f3f4fcc">iso7816_hz</a>, cpu_hz)) != <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00372"></a>00372                 <span class="keywordflow">return</span> retval;<a name="l00373"></a>00373 <a name="l00374"></a>00374         <span class="comment">/* Set FIDI register: bit rate = selected clock/FI_DI_ratio/16 */</span><a name="l00375"></a>00375         usart-&gt;fidi = opt-&gt;<a class="code" href="structiso7816__options__t.html#bf0d2900a6f8f97c0163176f2600551c">fidi_ratio</a>;<a name="l00376"></a>00376         <span class="comment">/* Set ISO7816 spesific options in the MODE register */</span><a name="l00377"></a>00377         usart-&gt;mr |= (opt-&gt;<a class="code" href="structiso7816__options__t.html#128f4d404bb0369177a591eb8a0a9269">inhibit_nack</a> &lt;&lt; AVR32_USART_MR_INACK_OFFSET) |<a name="l00378"></a>00378                      (opt-&gt;<a class="code" href="structiso7816__options__t.html#b8d335e18629f4fcf625e1a7e23e35be">dis_suc_nack</a> &lt;&lt; AVR32_USART_MR_DSNACK_OFFSET) |<a name="l00379"></a>00379                      (opt-&gt;<a class="code" href="structiso7816__options__t.html#4c74df529ed76d2962f54cd1f0f5027f">max_iterations</a> &lt;&lt; AVR32_USART_MR_MAX_ITERATION_OFFSET) |<a name="l00380"></a>00380                      (1 &lt;&lt; AVR32_USART_MR_CLKO_OFFSET); <span class="comment">/* Enable clock output */</span><a name="l00381"></a>00381 <a name="l00382"></a>00382         <span class="comment">/* Setup complete; enable input */</span><a name="l00383"></a>00383         <span class="comment">/* Leave TX disabled for now */</span><a name="l00384"></a>00384         usart-&gt;cr |= (1&lt;&lt;AVR32_USART_CR_RXEN_OFFSET);<a name="l00385"></a>00385 <a name="l00386"></a>00386         <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00387"></a>00387 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph.png" border="0" usemap="#usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph_map" alt=""></center><map name="usart_8c_8e201d6c020402a4b2864d67ae8f4935_cgraph_map"><area href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2" shape="rect" coords="228,6,324,30" alt=""><area href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7" shape="rect" coords="200,54,352,78" alt=""></map></div></div><p><a class="anchor" name="10edfa287366908edc4182421d00008b"></a><!-- doxytag: member="usart.c::usart_init_modem" ref="10edfa287366908edc4182421d00008b" args="(volatile struct avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_init_modem           </td>          <td>(</td>          <td class="paramtype">volatile struct avr32_usart_t *&nbsp;</td>          <td class="paramname"> <em>usart</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">struct <a class="el" href="structusart__options__t.html">usart_options_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">long&nbsp;</td>          <td class="paramname"> <em>cpu_hz</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><p>Definition at line <a class="el" href="usart_8c-source.html#l00285">285</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8c-source.html#l00152">usart_init_rs232()</a>, <a class="el" href="usart_8h-source.html#l00296">USART_MODE_MODEM</a>, and <a class="el" href="usart_8h-source.html#l00253">USART_SUCCESS</a>.<div class="fragment"><pre class="fragment"><a name="l00286"></a>00286 {<a name="l00287"></a>00287         <span class="keywordtype">int</span> retval;<a name="l00288"></a>00288 <a name="l00289"></a>00289         <span class="comment">/* First: Setup standard RS323 */</span><a name="l00290"></a>00290         <span class="keywordflow">if</span> ((retval = <a class="code" href="usart_8c.html#48c8d76fc9fdde84b94a6e09184a6446">usart_init_rs232</a>(usart, opt, cpu_hz)) != <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00291"></a>00291                 <span class="keywordflow">return</span> retval;<a name="l00292"></a>00292 <a name="l00293"></a>00293         <span class="comment">/* Clear previous mode */</span><a name="l00294"></a>00294         usart-&gt; mr &amp;= ~(0xf &lt;&lt; AVR32_USART_MR_MODE_OFFSET);<a name="l00295"></a>00295         <span class="comment">/* Set Modem mode */</span><a name="l00296"></a>00296         usart-&gt; mr |= (<a class="code" href="usart_8h.html#e01dfbdf6f2d1c148b0320e19f8fa98e">USART_MODE_MODEM</a> &lt;&lt; AVR32_USART_MR_MODE_OFFSET);<a name="l00297"></a>00297         <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00298"></a>00298 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_10edfa287366908edc4182421d00008b_cgraph.png" border="0" usemap="#usart_8c_10edfa287366908edc4182421d00008b_cgraph_map" alt=""></center><map name="usart_8c_10edfa287366908edc4182421d00008b_cgraph_map"><area href="usart_8c.html#48c8d76fc9fdde84b94a6e09184a6446" shape="rect" coords="197,30,328,54" alt=""><area href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2" shape="rect" coords="404,6,500,30" alt=""><area href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7" shape="rect" coords="376,54,528,78" alt=""></map></div></div><p><a class="anchor" name="48c8d76fc9fdde84b94a6e09184a6446"></a><!-- doxytag: member="usart.c::usart_init_rs232" ref="48c8d76fc9fdde84b94a6e09184a6446" args="(volatile struct avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_init_rs232           </td>          <td>(</td>          <td class="paramtype">volatile struct avr32_usart_t *&nbsp;</td>          <td class="paramname"> <em>usart</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">struct <a class="el" href="structusart__options__t.html">usart_options_t</a> *&nbsp;</td>          <td class="paramname"> <em>opt</em>, </td>        </tr>        <tr>          <td class="paramkey"></td>          <td></td>          <td class="paramtype">long&nbsp;</td>          <td class="paramname"> <em>cpu_hz</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>Setup the usart to use the standard RS232 protocol <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>*opt</em>&nbsp;</td><td>Options needed to set up RS232 communcation (see <a class="el" href="structusart__options__t.html">usart_options_t</a>) </td></tr>    <tr><td valign="top"></td><td valign="top"><em>cpu_hz</em>&nbsp;</td><td>The usart clk frequency </td></tr>  </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>USART_SUCCESS or USART_INVALID_INPUT </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00152">152</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8h-source.html#l00077">usart_options_t::baudrate</a>, <a class="el" href="usart_8h-source.html#l00104">usart_options_t::channelmode</a>, <a class="el" href="usart_8h-source.html#l00082">usart_options_t::charlength</a>, <a class="el" href="usart_8h-source.html#l00089">usart_options_t::paritytype</a>, <a class="el" href="usart_8h-source.html#l00097">usart_options_t::stopbits</a>, <a class="el" href="usart_8h-source.html#l00258">USART_INVALID_INPUT</a>, <a class="el" href="usart_8c-source.html#l00070">usart_reset()</a>, <a class="el" href="usart_8c-source.html#l00105">usart_set_baudrate()</a>, and <a class="el" href="usart_8h-source.html#l00253">USART_SUCCESS</a>.<p>Referenced by <a class="el" href="usart__example_8c-source.html#l00096">main()</a>, <a class="el" href="usart_8c-source.html#l00220">usart_init_handshaking()</a>, <a class="el" href="usart_8c-source.html#l00261">usart_init_IrDA()</a>, <a class="el" href="usart_8c-source.html#l00285">usart_init_modem()</a>, and <a class="el" href="usart_8c-source.html#l00310">usart_init_rs485()</a>.<div class="fragment"><pre class="fragment"><a name="l00153"></a>00153 {

⌨️ 快捷键说明

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