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

📄 usart_8c.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00417"></a>00417         <span class="keywordflow">return</span> ((usart-&gt;csr &amp; (1&lt;&lt;AVR32_USART_CSR_PARE_OFFSET)) != 0);<a name="l00418"></a>00418 }</pre></div><p></div></div><p><a class="anchor" name="908695fc913f77a6c1ab2a89e201a1fd"></a><!-- doxytag: member="usart.c::usart_putchar" ref="908695fc913f77a6c1ab2a89e201a1fd" args="(volatile struct avr32_usart_t *usart, int c)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_putchar           </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">int&nbsp;</td>          <td class="paramname"> <em>c</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>Send a character with the usart <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>c</em>&nbsp;</td><td>Character to write </td></tr>  </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if char was written, -1 if the function timed out before the usart transmitter became ready to send </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00538">538</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8h-source.html#l00274">USART_DEFAULT_TIMEOUT</a>, <a class="el" href="usart_8h-source.html#l00253">USART_SUCCESS</a>, and <a class="el" href="usart_8c-source.html#l00492">usart_write_char()</a>.<p>Referenced by <a class="el" href="usart__example_8c-source.html#l00134">print()</a>.<div class="fragment"><pre class="fragment"><a name="l00539"></a>00539 {<a name="l00540"></a>00540         <span class="keywordtype">int</span> timeout = <a class="code" href="usart_8h.html#c8dc7a35914ec78bd7382630499bd856">USART_DEFAULT_TIMEOUT</a>;<a name="l00541"></a>00541 <a name="l00542"></a>00542         <span class="keywordflow">if</span> (c == <span class="charliteral">'\n'</span>){<a name="l00543"></a>00543           <span class="keywordflow">while</span> ((<a class="code" href="usart_8c.html#26a849327e3bccdef17734f30667d9bd">usart_write_char</a>(usart, <span class="charliteral">'\r'</span>) != <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>) &amp;&amp; (timeout&gt;0) ){<a name="l00544"></a>00544             timeout--;<a name="l00545"></a>00545           }<a name="l00546"></a>00546         <a name="l00547"></a>00547           <span class="keywordflow">if</span> (timeout == 0)<a name="l00548"></a>00548             <span class="keywordflow">return</span> -1;<a name="l00549"></a>00549           timeout = <a class="code" href="usart_8h.html#c8dc7a35914ec78bd7382630499bd856">USART_DEFAULT_TIMEOUT</a>;<a name="l00550"></a>00550         }<a name="l00551"></a>00551 <a name="l00552"></a>00552         <span class="keywordflow">while</span> ((<a class="code" href="usart_8c.html#26a849327e3bccdef17734f30667d9bd">usart_write_char</a>(usart, c) != <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>) &amp;&amp; ( timeout&gt;0 )){<a name="l00553"></a>00553           timeout--;<a name="l00554"></a>00554         }<a name="l00555"></a>00555         <span class="keywordflow">if</span> (timeout == 0)<a name="l00556"></a>00556                 <span class="keywordflow">return</span> -1;<a name="l00557"></a>00557         <span class="keywordflow">else</span><a name="l00558"></a>00558                 <span class="keywordflow">return</span> 0;<a name="l00559"></a>00559 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_908695fc913f77a6c1ab2a89e201a1fd_cgraph.png" border="0" usemap="#usart_8c_908695fc913f77a6c1ab2a89e201a1fd_cgraph_map" alt=""></center><map name="usart_8c_908695fc913f77a6c1ab2a89e201a1fd_cgraph_map"><area href="usart_8c.html#26a849327e3bccdef17734f30667d9bd" shape="rect" coords="171,6,304,30" alt=""></map></div></div><p><a class="anchor" name="ada9ca86fda25626da4a1c4b1e723682"></a><!-- doxytag: member="usart.c::usart_read_char" ref="ada9ca86fda25626da4a1c4b1e723682" args="(volatile struct avr32_usart_t *usart, int *c)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">int usart_read_char           </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">int *&nbsp;</td>          <td class="paramname"> <em>c</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>Checks the RX buffer for a received character, and puts this at the memory location given. <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>*c</em>&nbsp;</td><td>Pointer to the where the read charcter should be writen (must be short in order to accept 9 bit characters) </td></tr>  </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>USART_SUCCESS if the character was read successfully<br> USART_RX_EMPTY if the RX buffer was empty<br> USART_RX_ERROR if an error was deteceted<br> USART_ADDR_RECEIVED if an address is received while in multidrop mode </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00504">504</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8h-source.html#l00263">USART_RX_EMPTY</a>, <a class="el" href="usart_8h-source.html#l00265">USART_RX_ERROR</a>, and <a class="el" href="usart_8h-source.html#l00253">USART_SUCCESS</a>.<p>Referenced by <a class="el" href="usart_8c-source.html#l00524">usart_getchar()</a>.<div class="fragment"><pre class="fragment"><a name="l00505"></a>00505 {<a name="l00506"></a>00506         <span class="comment">/* Check for errors; Frame, parity and overrun In RS485 mode a parity</span><a name="l00507"></a>00507 <span class="comment">                error would mean that we received an address char */</span><a name="l00508"></a>00508         <span class="keywordflow">if</span> (usart-&gt;csr &amp;<a name="l00509"></a>00509                         ((1 &lt;&lt; AVR32_USART_CSR_OVRE_OFFSET) |<a name="l00510"></a>00510                         (1 &lt;&lt; AVR32_USART_CSR_FRAME_OFFSET) |<a name="l00511"></a>00511                         (1 &lt;&lt; AVR32_USART_CSR_PARE_OFFSET))) {<a name="l00512"></a>00512                 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#ffa1a7abf4e6ce54c0b64cc0826f8b4d">USART_RX_ERROR</a>;<a name="l00513"></a>00513         }<a name="l00514"></a>00514         <span class="comment">/* No error; if we really did receive a char, read it and return SUCCESS */</span><a name="l00515"></a>00515         <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((usart-&gt;csr &amp; (1&lt;&lt;AVR32_USART_CSR_RXRDY_OFFSET)) != 0) {<a name="l00516"></a>00516                 *c = (<span class="keywordtype">unsigned</span> short)usart-&gt;rhr;<a name="l00517"></a>00517                 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00518"></a>00518         } <span class="keywordflow">else</span> {<a name="l00519"></a>00519                 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#deb9432170d2d09a4ffbb098a1b4335e">USART_RX_EMPTY</a>;<a name="l00520"></a>00520         }<a name="l00521"></a>00521 } <span class="comment">/* usart_read */</span></pre></div><p></div></div><p><a class="anchor" name="e994c1e7797dda76388176f208a2e6f2"></a><!-- doxytag: member="usart.c::usart_reset" ref="e994c1e7797dda76388176f208a2e6f2" args="(volatile struct avr32_usart_t *usart)" --><div class="memitem"><div class="memproto">      <table class="memname">        <tr>          <td class="memname">void usart_reset           </td>          <td>(</td>          <td class="paramtype">volatile struct avr32_usart_t *&nbsp;</td>          <td class="paramname"> <em>usart</em>          </td>          <td>&nbsp;)&nbsp;</td>          <td width="100%"></td>        </tr>      </table></div><div class="memdoc"><p>This function will reset the USART, and disable TX and RX <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>  </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>nothing </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00070">70</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>Referenced by <a class="el" href="usart_8c-source.html#l00333">usart_init_iso7816()</a>, and <a class="el" href="usart_8c-source.html#l00152">usart_init_rs232()</a>.<div class="fragment"><pre class="fragment"><a name="l00071"></a>00071 {<a name="l00072"></a>00072         <span class="comment">/* Disable all usart interrupts, interrupts needed should be set</span><a name="l00073"></a>00073 <span class="comment">           explicitly on every reset */</span><a name="l00074"></a>00074         usart-&gt;idr = 0xFFFFffff;<a name="l00075"></a>00075 <a name="l00076"></a>00076         <span class="comment">/* Reset mode and other registers that could cause unpredictable</span><a name="l00077"></a>00077 <span class="comment">           behaviour after reset */</span><a name="l00078"></a>00078         usart-&gt;mr = 0;<a name="l00079"></a>00079         usart-&gt;rtor = 0;<a name="l00080"></a>00080         usart-&gt;ttgr = 0;<a name="l00081"></a>00081 <a name="l00082"></a>00082         <span class="comment">/* Shutdown RX and TX (will be reenabled when setup</span><a name="l00083"></a>00083 <span class="comment">           is completed successfully), reset status bits and turn</span><a name="l00084"></a>00084 <span class="comment">           off DTR and RTS */</span><a name="l00085"></a>00085         usart-&gt;cr = (1 &lt;&lt; AVR32_USART_CR_RSTRX_OFFSET) |<a name="l00086"></a>00086                     (1 &lt;&lt; AVR32_USART_CR_RSTTX_OFFSET) |<a name="l00087"></a>00087                     (1 &lt;&lt; AVR32_USART_CR_RSTSTA_OFFSET) |<a name="l00088"></a>00088                     (1 &lt;&lt; AVR32_USART_CR_RSTIT_OFFSET) |<a name="l00089"></a>00089                     (1 &lt;&lt; AVR32_USART_CR_RSTNACK_OFFSET) |<a name="l00090"></a>00090                     (1 &lt;&lt; AVR32_USART_CR_DTRDIS_OFFSET) |<a name="l00091"></a>00091                     (1 &lt;&lt; AVR32_USART_CR_RTSDIS_OFFSET);<a name="l00092"></a>00092 }</pre></div><p></div></div><p><a class="anchor" name="5f5ba5edef2948c6e5e8c37ba07e5989"></a><!-- doxytag: member="usart.c::usart_reset_status" ref="5f5ba5edef2948c6e5e8c37ba07e5989" args="(volatile struct avr32_us

⌨️ 快捷键说明

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