📄 testsuite_2bravo__validation_2usart_2usart_8c.html
字号:
<td></td><td></td><td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Send a character with the usart. <p><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>character</em> </td><td>character to write</td></tr> </table></dl><dl class="return" compact><dt><b>Returns:</b></dt><dd>status </dd></dl><dl compact><dt><b>Return values:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>USART_OK</em> </td><td>on success </td></tr> <tr><td valign="top"></td><td valign="top"><em>USART_TX_BUSY</em> </td><td>on timeout </td></tr> </table></dl><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00484">484</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<p>References <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00048">USART_DEFAULT_TIMEOUT</a>, <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8h-source.html#l00189">USART_SUCCESS</a>, and <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00439">usart_write_char()</a>.<div class="fragment"><pre class="fragment"><a name="l00485"></a>00485 {<a name="l00486"></a>00486 <span class="keywordtype">int</span> timeout = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#c8dc7a35914ec78bd7382630499bd856">USART_DEFAULT_TIMEOUT</a>;<a name="l00487"></a>00487 <a name="l00488"></a>00488 <span class="keywordflow">if</span> (c == <span class="charliteral">'\n'</span>){<a name="l00489"></a>00489 <span class="keywordflow">while</span> ((<a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#0c36f4b2ec5445212642ee7f94672805">usart_write_char</a>(usart, <span class="charliteral">'\r'</span>) != <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>) && --timeout)<a name="l00490"></a>00490 ;<a name="l00491"></a>00491 <span class="keywordflow">if</span> (timeout == 0)<a name="l00492"></a>00492 <span class="keywordflow">return</span> -1;<a name="l00493"></a>00493 timeout = <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#c8dc7a35914ec78bd7382630499bd856">USART_DEFAULT_TIMEOUT</a>;<a name="l00494"></a>00494 }<a name="l00495"></a>00495 <a name="l00496"></a>00496 <span class="keywordflow">while</span> ((<a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#0c36f4b2ec5445212642ee7f94672805">usart_write_char</a>(usart, c) != <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>) && --timeout)<a name="l00497"></a>00497 ;<a name="l00498"></a>00498 <span class="keywordflow">if</span> (timeout == 0)<a name="l00499"></a>00499 <span class="keywordflow">return</span> -1;<a name="l00500"></a>00500 <span class="keywordflow">else</span><a name="l00501"></a>00501 <span class="keywordflow">return</span> 0;<a name="l00502"></a>00502 }</pre></div><p><p>Here is the call graph for this function:</div></div><p><a class="anchor" name="b73fc2f42bd6fe66c03d598b0158436d"></a><!-- doxytag: member="usart.c::usart_read_char" ref="b73fc2f42bd6fe66c03d598b0158436d" args="(volatile 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 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%"></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> </td><td>Base address of the usart </td></tr> <tr><td valign="top"></td><td valign="top"><em>*c</em> </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="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00451">451</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<p>Referenced by <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00471">usart_getchar()</a>.<div class="fragment"><pre class="fragment"><a name="l00452"></a>00452 {<a name="l00453"></a>00453 <span class="comment">/* Check for errors; Frame, parity and overrun In RS485 mode a parity</span><a name="l00454"></a>00454 <span class="comment"> error would mean that we received an address char */</span><a name="l00455"></a>00455 <span class="keywordflow">if</span> (usart->csr &<a name="l00456"></a>00456 ((1 << AVR32_USART_CSR_OVRE_OFFSET) |<a name="l00457"></a>00457 (1 << AVR32_USART_CSR_FRAME_OFFSET) |<a name="l00458"></a>00458 (1 << AVR32_USART_CSR_PARE_OFFSET))) {<a name="l00459"></a>00459 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#ffa1a7abf4e6ce54c0b64cc0826f8b4d">USART_RX_ERROR</a>;<a name="l00460"></a>00460 }<a name="l00461"></a>00461 <span class="comment">/* No error; if we really did receive a char, read it and return SUCCESS */</span><a name="l00462"></a>00462 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((usart->csr & (1<<AVR32_USART_CSR_RXRDY_OFFSET)) != 0) {<a name="l00463"></a>00463 *c = (<span class="keywordtype">unsigned</span> short)usart->rhr;<a name="l00464"></a>00464 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00465"></a>00465 } <span class="keywordflow">else</span> {<a name="l00466"></a>00466 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#deb9432170d2d09a4ffbb098a1b4335e">USART_RX_EMPTY</a>;<a name="l00467"></a>00467 }<a name="l00468"></a>00468 } <span class="comment">/* usart_read */</span></pre></div><p></div></div><p><a class="anchor" name="31cf4d67fd204fb4684fff9d7994cb4c"></a><!-- doxytag: member="usart.c::usart_reset" ref="31cf4d67fd204fb4684fff9d7994cb4c" args="(volatile 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 avr32_usart_t * </td> <td class="paramname"> <em>usart</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>This function will reset the USART, and disable TX and RX. <p><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><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html#l00013">13</a> of file <a class="el" href="testsuite_2bravo__validation_2usart_2usart_8c-source.html">usart.c</a>.<div class="fragment"><pre class="fragment"><a name="l00014"></a>00014 {<a name="l00015"></a>00015 <span class="comment">/* Disable all usart interrupts, interrupts needed should be set</span><a name="l00016"></a>00016 <span class="comment"> explicitly on every reset */</span><a name="l00017"></a>00017 usart->idr = 0xFFFFffff;<a name="l00018"></a>00018 <a name="l00019"></a>00019 <span class="comment">/* Reset mode and other registers that could cause unpredictable</span><a name="l00020"></a>00020 <span class="comment"> behaviour after reset */</span><a name="l00021"></a>00021 usart->mr = 0;<a name="l00022"></a>00022 usart->rtor = 0;<a name="l00023"></a>00023 usart->ttgr = 0;<a name="l00024"></a>00024 <a name="l00025"></a>00025 <span class="comment">/* Shutdown RX and TX (will be reenabled when setup</span><a name="l00026"></a>00026 <span class="comment"> is completed successfully), reset status bits and turn</span><a name="l00027"></a>00027 <span class="comment"> off DTR and RTS */</span><a name="l00028"></a>00028 usart->cr = (1 << AVR32_USART_CR_RSTRX_OFFSET) |<a name="l00029"></a>00029 (1 << AVR32_USART_CR_RSTTX_OFFSET) |<a name="l00030"></a>00030 (1 << AVR32_USART_CR_RSTSTA_OFFSET) |<a name="l00031"></a>00031 (1 << AVR32_USART_CR_RSTIT_OFFSET) |<a name="l00032"></a>00032 (1 << AVR32_USART_CR_RSTNACK_OFFSET) |<a name="l00033"></a>00033 (1 << AVR32_USART_CR_DTRDIS_OFFSET) |<a name="l00034"></a>00034 (1 << AVR32_USART_CR_RTSDIS_OFFSET);<a name="l00035"></a>00035 }</pre></div><p></div></div><p><a class="anchor" name="526363b4ce2f098ac507b7461b9adf0c"></a><!-- doxytag: member="usart.c::usart_reset_status" ref="526363b4ce2f098ac507b7461b9adf0c" args="(volatile avr32_usart_t *usart)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">void usart_reset_status </td> <td>(</td> <td class="paramtype">volatile avr32_usart_t * </td> <td class="paramname"> <em>usart</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table></div><div class="memdoc"><p>Reset error status. <p>This function resets the status bits indicating that a parity error, framing error or overrun has occured. The rxbreak bit, indicating a start/end of break condition on the rx-line, is also reset. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -