📄 usart_8c.html
字号:
<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_8c_48c8d76fc9fdde84b94a6e09184a6446_cgraph.png" border="0" usemap="#usart_8c_48c8d76fc9fdde84b94a6e09184a6446_cgraph_map" alt=""></center><map name="usart_8c_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="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)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_init_rs485 </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><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="usart_8c-source.html#l00152">usart_init_rs232()</a>, <a class="el" href="usart_8h-source.html#l00292">USART_MODE_RS485</a>, and <a class="el" href="usart_8h-source.html#l00253">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="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="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_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="usart_8h.html#a2946a63275da85d3b578044a88bbd7d">USART_MODE_RS485</a> << AVR32_USART_MR_MODE_OFFSET);<a name="l00322"></a>00322 <span class="keywordflow">return</span> <a class="code" href="usart_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="usart_8c.html#48c8d76fc9fdde84b94a6e09184a6446" shape="rect" coords="184,30,315,54" alt=""><area href="usart_8c.html#e994c1e7797dda76388176f208a2e6f2" shape="rect" coords="391,6,487,30" alt=""><area href="usart_8c.html#6f965be9b52e86ba6f47f12a0b6d08e7" shape="rect" coords="363,54,515,78" alt=""></map></div></div><p><a class="anchor" name="8130f0bc38f83949813164455b44c215"></a><!-- doxytag: member="usart.c::usart_mode_is_multidrop" ref="8130f0bc38f83949813164455b44c215" args="(volatile struct avr32_usart_t *usart)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">static int usart_mode_is_multidrop </td> <td>(</td> <td class="paramtype">volatile struct avr32_usart_t * </td> <td class="paramname"> <em>usart</em> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table></div><div class="memdoc"><p><p>Definition at line <a class="el" href="usart_8c-source.html#l00065">65</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#l00461">usart_send_address()</a>.<div class="fragment"><pre class="fragment"><a name="l00066"></a>00066 {<a name="l00067"></a>00067 <span class="keywordflow">return</span> ( (usart->mr & 0x00000600) >> AVR32_USART_MR_PAR_OFFSET );<a name="l00068"></a>00068 }</pre></div><p></div></div><p><a class="anchor" name="f19dc6969879984f29017d93fb7eb457"></a><!-- doxytag: member="usart.c::usart_overrun_error" ref="f19dc6969879984f29017d93fb7eb457" args="(volatile struct avr32_usart_t *usart)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_overrun_error </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><p>Definition at line <a class="el" href="usart_8c-source.html#l00437">437</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<div class="fragment"><pre class="fragment"><a name="l00438"></a>00438 {<a name="l00439"></a>00439 <span class="keywordflow">return</span> ((usart->csr & AVR32_USART_CSR_OVRE_OFFSET)) != 0;<a name="l00440"></a>00440 }</pre></div><p></div></div><p><a class="anchor" name="d7c23614e6558fa48bed23c78c07515f"></a><!-- doxytag: member="usart.c::usart_parity_error" ref="d7c23614e6558fa48bed23c78c07515f" args="(volatile struct avr32_usart_t *usart)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_parity_error </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><p>Definition at line <a class="el" href="usart_8c-source.html#l00415">415</a> of file <a class="el" href="usart_8c-source.html">usart.c</a>.<div class="fragment"><pre class="fragment"><a name="l00416"></a>00416 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -