📄 usart_8h.html
字号:
<p>Referenced by <a class="el" href="usart_8c-source.html#l00484">usart_bw_write_char()</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#l00333">usart_init_iso7816()</a>, <a class="el" href="usart_8c-source.html#l00285">usart_init_modem()</a>, <a class="el" href="usart_8c-source.html#l00152">usart_init_rs232()</a>, <a class="el" href="usart_8c-source.html#l00310">usart_init_rs485()</a>, <a class="el" href="usart_8c-source.html#l00538">usart_putchar()</a>, <a class="el" href="usart_8c-source.html#l00504">usart_read_char()</a>, <a class="el" href="usart_8c-source.html#l00461">usart_send_address()</a>, <a class="el" href="usart_8c-source.html#l00105">usart_set_baudrate()</a>, and <a class="el" href="usart_8c-source.html#l00492">usart_write_char()</a>.</div></div><p><a class="anchor" name="481df5bfed5fec78ff5697b335ab5947"></a><!-- doxytag: member="usart.h::USART_TX_BUSY" ref="481df5bfed5fec78ff5697b335ab5947" args="" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">#define USART_TX_BUSY 2 </td> </tr> </table></div><div class="memdoc"><p>Value returned by transmission function when transmitter was busy <p>Definition at line <a class="el" href="usart_8h-source.html#l00261">261</a> of file <a class="el" href="usart_8h-source.html">usart.h</a>.<p>Referenced by <a class="el" href="usart_8c-source.html#l00492">usart_write_char()</a>.</div></div><p><hr><h2>Function Documentation</h2><a class="anchor" name="0cd4c3b95035f5943696ffd9b56ee494"></a><!-- doxytag: member="usart.h::usart_bw_write_char" ref="0cd4c3b95035f5943696ffd9b56ee494" args="(volatile struct avr32_usart_t *usart, int c)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">void usart_bw_write_char </td> <td>(</td> <td class="paramtype">volatile struct avr32_usart_t * </td> <td class="paramname"> <em>usart</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"><code> [inline]</code></td> </tr> </table></div><div class="memdoc"><p>A busy wait for writing a character to the usart. Use with *caution* <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>c</em> </td><td>The character (up to 9 bits) to transmit </td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>None </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00484">484</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <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_8c-source.html#l00461">usart_send_address()</a>.<div class="fragment"><pre class="fragment"><a name="l00485"></a>00485 {<a name="l00486"></a>00486 <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>) {<a name="l00487"></a>00487 }<a name="l00488"></a>00488 <a name="l00489"></a>00489 <span class="keywordflow">return</span>;<a name="l00490"></a>00490 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8h_0cd4c3b95035f5943696ffd9b56ee494_cgraph.png" border="0" usemap="#usart_8h_0cd4c3b95035f5943696ffd9b56ee494_cgraph_map" alt=""></center><map name="usart_8h_0cd4c3b95035f5943696ffd9b56ee494_cgraph_map"><area href="usart_8c.html#26a849327e3bccdef17734f30667d9bd" shape="rect" coords="213,6,347,30" alt=""></map></div></div><p><a class="anchor" name="ad19b20067ca5ccf90d584e3b09ab02a"></a><!-- doxytag: member="usart.h::usart_getchar" ref="ad19b20067ca5ccf90d584e3b09ab02a" args="(volatile struct avr32_usart_t *usart)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_getchar </td> <td>(</td> <td class="paramtype">volatile struct avr32_usart_t * </td> <td class="paramname"> <em>usart</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Wait until a character is recevied, and return this. <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> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>The received character, or -1 upon error </dd></dl><p>Definition at line <a class="el" href="usart_8c-source.html#l00524">524</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="usart_8c-source.html#l00504">usart_read_char()</a>, <a class="el" href="usart_8h-source.html#l00263">USART_RX_EMPTY</a>, and <a class="el" href="usart_8h-source.html#l00265">USART_RX_ERROR</a>.<div class="fragment"><pre class="fragment"><a name="l00525"></a>00525 {<a name="l00526"></a>00526 <span class="keywordtype">int</span> c, ret;<a name="l00527"></a>00527 <a name="l00528"></a>00528 <span class="keywordflow">while</span> (((ret = <a class="code" href="usart_8c.html#ada9ca86fda25626da4a1c4b1e723682">usart_read_char</a>(usart, &c)) == <a class="code" href="usart_8h.html#deb9432170d2d09a4ffbb098a1b4335e">USART_RX_EMPTY</a>)) {<a name="l00529"></a>00529 }<a name="l00530"></a>00530 <a name="l00531"></a>00531 <span class="keywordflow">if</span> (ret == <a class="code" href="usart_8h.html#ffa1a7abf4e6ce54c0b64cc0826f8b4d">USART_RX_ERROR</a>)<a name="l00532"></a>00532 <span class="keywordflow">return</span> -1;<a name="l00533"></a>00533 <span class="keywordflow">else</span><a name="l00534"></a>00534 <span class="keywordflow">return</span> c;<a name="l00535"></a>00535 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8h_ad19b20067ca5ccf90d584e3b09ab02a_cgraph.png" border="0" usemap="#usart_8h_ad19b20067ca5ccf90d584e3b09ab02a_cgraph_map" alt=""></center><map name="usart_8h_ad19b20067ca5ccf90d584e3b09ab02a_cgraph_map"><area href="usart_8c.html#ada9ca86fda25626da4a1c4b1e723682" shape="rect" coords="168,6,299,30" alt=""></map></div></div><p><a class="anchor" name="48c8d76fc9fdde84b94a6e09184a6446"></a><!-- doxytag: member="usart.h::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 * </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> * </td> <td class="paramname"> <em>opt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long </td> <td class="paramname"> <em>cpu_hz</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>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> </td><td>Base address of the usart </td></tr> <tr><td valign="top"></td><td valign="top"><em>*opt</em> </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> </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 {<a name="l00154"></a>00154 <span class="keywordtype">int</span> retval;<a name="l00155"></a>00155 <a name="l00156"></a>00156 <span class="comment">/* Reset the usart and shutdown RX and TX */</span><a name="l00157"></a>00157 <a class="code" href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2">usart_reset</a>(usart);<a name="l00158"></a>00158 <a name="l00159"></a>00159 <span class="comment">/* Control input values */</span><a name="l00160"></a>00160 <span class="keywordflow">if</span> (opt == 0) <span class="comment">/* Null pointer */</span><a name="l00161"></a>00161 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00162"></a>00162 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> < 5 || opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> > 9)<a name="l00163"></a>00163 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00164"></a>00164 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> > 7)<a name="l00165"></a>00165 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00166"></a>00166 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> > 2+255)<a name="l00167"></a>00167 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00168"></a>00168 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> > 3)<a name="l00169"></a>00169 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00170"></a>00170 <a name="l00171"></a>00171 <span class="keywordflow">if</span> ((retval = <a class="code" href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7">usart_set_baudrate</a>(usart, opt-><a class="code" href="structusart__options__t.html#276ad428776a25b8247762bd2c82b35b">baudrate</a>, cpu_hz)) != \<a name="l00172"></a>00172 <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00173"></a>00173 <span class="keywordflow">return</span> retval;<a name="l00174"></a>00174 <a name="l00175"></a>00175 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> == 9) {<a name="l00176"></a>00176 <span class="comment">/* Charlength set to 9 bits; MODE9 dominates CHRL */</span><a name="l00177"></a>00177 usart->mr |= (1<<AVR32_USART_MR_MODE9_OFFSET);<a name="l00178"></a>00178 } <span class="keywordflow">else</span> {<a name="l00179"></a>00179 <span class="comment">/* CHRL gives the charlength( - 5) when USART_MODE9=0 */</span><a name="l00180"></a>00180 usart->mr |=<a name="l00181"></a>00181 ((opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a>-5) << AVR32_USART_MR_CHRL_OFFSET);<a name="l00182"></a>00182 }<a name="l00183"></a>00183 <a name="l00184"></a>00184 usart->mr |= (opt-><a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> << AVR32_USART_MR_CHMODE_OFFSET) |<a name="l00185"></a>00185 (opt-><a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> << AVR32_USART_MR_PAR_OFFSET);<a name="l00186"></a>00186 <a name="l00187"></a>00187 <span class="keywordflow">if</span> (opt-><a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> > 2)<a name="l00188"></a>00188 {<a name="l00189"></a>00189 <span class="comment">/* Set two stop bits */</span><a name="l00190"></a>00190 usart->mr |= (2 << AVR32_USART_MR_NBSTOP_OFFSET);<a name="l00191"></a>00191 <span class="comment">/* And a timeguard period gives the rest */</span><a name="l00192"></a>00192 usart->ttgr = (opt-><a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a>-2);<a name="l00193"></a>00193 }<a name="l00194"></a>00194 <span class="keywordflow">else</span><a name="l00195"></a>00195 <span class="comment">/* Insert 1, 1.5 or 2 stop bits */</span><a name="l00196"></a>00196 usart->mr |= (opt-><a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> << AVR32_USART_MR_NBSTOP_OFFSET);<a name="l00197"></a>00197 <a name="l00198"></a>00198 <span class="comment">/* Setup complete; enable communication */</span><a name="l00199"></a>00199 <span class="comment">/* Enable input and output */</span><a name="l00200"></a>00200 usart->cr |= (1<<AVR32_USART_CR_TXEN_OFFSET) |<a name="l00201"></a>00201 (1<<AVR32_USART_CR_RXEN_OFFSET);<a name="l00202"></a>00202 <a name="l00203"></a>00203 <span class="keywordflow">return</span> <a class="code" href="usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00204"></a>00204 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8h_48c8d76fc9fdde84b94a6e09184a6446_cgraph.png" border="0" usemap="#usart_8h_48c8d76fc9fdde84b94a6e09184a6446_cgraph_map" alt=""></center><map name="usart_8h_48c8d76fc9fdde84b94a6e09184a6446_cgraph_map"><area href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2" shape="rect" coords="212,6,308,30" alt=""><area href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7" shape="rect" coords="184,54,336,78" alt=""></map></div></div><p><a class="anchor" name="908695fc913f77a6c1ab2a89e201a1fd"></a><!-- doxytag: member="usart.h::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 * </td> <td class="paramname"> <em>usart</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -