📄 usart_8c.html.svn-base
字号:
<table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int usart_init_rs232 </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">volatile struct avr32_usart_t * </td> <td class="mdname" nowrap> <em>usart</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>struct <a class="el" href="structusart__options__t.html">usart_options_t</a> * </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>long </td> <td class="mdname" nowrap> <em>cpu_hz</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><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 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="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00102">usart_options_t::baudrate</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00129">usart_options_t::channelmode</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00107">usart_options_t::charlength</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00114">usart_options_t::paritytype</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00122">usart_options_t::stopbits</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00194">USART_INVALID_INPUT</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00027">usart_reset()</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00065">usart_set_baudrate()</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00189">USART_SUCCESS</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="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf">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="testsuite_2bravo__validation_2usart_2usart_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="testsuite_2bravo__validation_2usart_2usart_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_8c_48c8d76fc9fdde84b94a6e09184a6446_cgraph.png" border="0" usemap="#usart_8c_48c8d76fc9fdde84b94a6e09184a6446_cgraph_map" alt=""></center><map name="usart_8c_48c8d76fc9fdde84b94a6e09184a6446_cgraph_map"><area href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c" shape="rect" coords="198,8,286,32" alt=""><area href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf" shape="rect" coords="174,56,310,80" alt=""></map> </td> </tr></table><a class="anchor" name="cdd842541ff63ad361bb137f464bf1a0"></a><!-- doxytag: member="usart.c::usart_init_rs485" ref="cdd842541ff63ad361bb137f464bf1a0" args="(volatile struct avr32_usart_t *usart, struct usart_options_t *opt, long cpu_hz)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int usart_init_rs485 </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">volatile struct avr32_usart_t * </td> <td class="mdname" nowrap> <em>usart</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>struct <a class="el" href="structusart__options__t.html">usart_options_t</a> * </td> <td class="mdname" nowrap> <em>opt</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>long </td> <td class="mdname" nowrap> <em>cpu_hz</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><p>Definition at line <a class="el" href="usart_8c-source.html#l00310">310</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00095">usart_init_rs232()</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00066">USART_MODE_RS485</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00189">USART_SUCCESS</a>.<div class="fragment"><pre class="fragment"><a name="l00311"></a>00311 {<a name="l00312"></a>00312 <span class="keywordtype">int</span> retval;<a name="l00313"></a>00313 <a name="l00314"></a>00314 <span class="comment">/* First: Setup standard RS323 */</span><a name="l00315"></a>00315 <span class="keywordflow">if</span> ((retval = <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#093c5ad113e1ab43603c0d815ad8dc54">usart_init_rs232</a>(usart, opt, cpu_hz)) != <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>)<a name="l00316"></a>00316 <span class="keywordflow">return</span> retval;<a name="l00317"></a>00317 <a name="l00318"></a>00318 <span class="comment">/* Clear previous mode */</span><a name="l00319"></a>00319 usart->mr &= ~(0xf << AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00320"></a>00320 <span class="comment">/* Set Modem mode */</span><a name="l00321"></a>00321 usart->mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#a2946a63275da85d3b578044a88bbd7d">USART_MODE_RS485</a> << AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00322"></a>00322 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00323"></a>00323 }</pre></div><p><p>Here is the call graph for this function:<p><center><img src="usart_8c_cdd842541ff63ad361bb137f464bf1a0_cgraph.png" border="0" usemap="#usart_8c_cdd842541ff63ad361bb137f464bf1a0_cgraph_map" alt=""></center><map name="usart_8c_cdd842541ff63ad361bb137f464bf1a0_cgraph_map"><area href="testsuite_2bravo__validation_2usart_2usart_8c.html#093c5ad113e1ab43603c0d815ad8dc54" shape="rect" coords="173,8,290,32" alt=""></map> </td> </tr></table><a class="anchor" name="8130f0bc38f83949813164455b44c215"></a><!-- doxytag: member="usart.c::usart_mode_is_multidrop" ref="8130f0bc38f83949813164455b44c215" args="(volatile struct avr32_usart_t *usart)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">static int usart_mode_is_multidrop </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">volatile struct avr32_usart_t * </td> <td class="mdname1" valign="top" nowrap> <em>usart</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [static]</code></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -