📄 testsuite_2bravo__validation_2pdc_2usart_8c.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>AVR321000 Communication with the AVR32 USART: testsuite/bravo_validation/pdc/usart.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"><link href="tabs.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.5.1 --><div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul></div><div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div><div class="nav"><a class="el" href="dir_ed041fa8052270846d9a0dab17b0d151.html">testsuite</a> » <a class="el" href="dir_18e6971fa792d4606dff45a531675719.html">bravo_validation</a> » <a class="el" href="dir_8c4082e77fbbc3a6ea8174dc22e0d829.html">pdc</a></div><h1>usart.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>PDC example application. <p>This file gives an example of using the PDC to burst data on the USART.<p><ul><li>Compiler: IAR EWAAVR32 and GNU GCC for AVR32</li><li>Supported devices: All AVR32 devices with PDC and USART module.</li><li>AppNote: AVR32106 - Peripheral Direct Memory Access Driver</li></ul><p><dl class="author" compact><dt><b>Author:</b></dt><dd>Atmel Corporation: <a href="http://www.atmel.com">http://www.atmel.com</a> <br> Support email: <a href="mailto:avr32@atmel.com">avr32@atmel.com</a></dd></dl>$Name$ <dl class="rcs" compact><dt><b>Revision</b></dt><dd>42 </dd></dl>$RCSfile$ <dl class="rcs" compact><dt><b>Date</b></dt><dd>2006-03-22 09:08:08 +0100 (Wed, 22 Mar 2006) </dd></dl><p>Definition in file <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html">usart.c</a>.<p><code>#include "<a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html">usart.h</a>"</code><br><p>Include dependency graph for usart.c:<p><a href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#d2cd45d1e18b6d00c182ac3663f0aa72">usart_init2</a> (volatile avr32_usart_t *usart, struct <a class="el" href="structusart__options__t.html">usart_options_t</a> *opt, long cpuHz)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Setup the usart to use the standard RS232 protocol. <a href="#d2cd45d1e18b6d00c182ac3663f0aa72"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#d8d5a1b7705f01b3ace3de0948930600">usart_putchar</a> (volatile avr32_usart_t *usart, int character)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Send a character with the usart. <a href="#d8d5a1b7705f01b3ace3de0948930600"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">usart_reset</a> (volatile avr32_usart_t *usart)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">This function will reset the USART, and disable TX and RX. <a href="#31cf4d67fd204fb4684fff9d7994cb4c"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#38c10272f6d0b8e873a213dd39d5d1cf">usart_set_baudrate</a> (volatile avr32_usart_t *usart, unsigned int baudrate, long cpuHz)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">This function will calculate a clock divider(CD) and fractional part(FP) that gets the usart as close to a wanted baudrate as possible. <a href="#38c10272f6d0b8e873a213dd39d5d1cf"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#2762980365c2aadfa3170a622c71b6cf">usart_writeLine</a> (volatile avr32_usart_t *usart, char *<a class="el" href="pdc__example_8c.html#ed1cfb225a5fb77461e7972691e68a72">string</a>)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">write one character string to the usart <a href="#2762980365c2aadfa3170a622c71b6cf"></a><br></td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="d2cd45d1e18b6d00c182ac3663f0aa72"></a><!-- doxytag: member="usart.c::usart_init2" ref="d2cd45d1e18b6d00c182ac3663f0aa72" args="(volatile avr32_usart_t *usart, struct usart_options_t *opt, long cpuHz)" --><div class="memitem"><div class="memproto"> <table class="memname"> <tr> <td class="memname">int usart_init2 </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">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>cpuHz</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. <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>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>cpuHz</em> </td><td>frequency of the selected clock</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_ERROR_ARGUMENT</em> </td><td>on wrong arguments </td></tr> </table></dl><p>Definition at line <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00120">120</a> of file <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_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_2pdc_2usart_8h-source.html#l00033">USART_ERROR_ARGUMENT</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8h-source.html#l00028">USART_OK</a>, <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00027">usart_reset()</a>, and <a class="el" href="testsuite_2bravo__validation_2pdc_2usart_8c-source.html#l00065">usart_set_baudrate()</a>.<p>Referenced by <a class="el" href="pdc__example_8c-source.html#l00110">main()</a>.<div class="fragment"><pre class="fragment"><a name="l00123"></a>00123 {<a name="l00124"></a>00124 <span class="keywordtype">int</span> retval;<a name="l00125"></a>00125 <a name="l00126"></a>00126 <span class="comment">/* reset the usart and shutdown RX and TX */</span><a name="l00127"></a>00127 <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8c.html#31cf4d67fd204fb4684fff9d7994cb4c">usart_reset</a>(usart);<a name="l00128"></a>00128 <a name="l00129"></a>00129 <span class="comment">/* control input values */</span><a name="l00130"></a>00130 <span class="keywordflow">if</span>( opt == 0 ) {<a name="l00131"></a>00131 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00132"></a>00132 }<a name="l00133"></a>00133 <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="l00134"></a>00134 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00135"></a>00135 }<a name="l00136"></a>00136 <span class="keywordflow">if</span>( opt-><a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> > 7 ) {<a name="l00137"></a>00137 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00138"></a>00138 }<a name="l00139"></a>00139 <span class="keywordflow">if</span>( opt-><a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> > 2+255 ) {<a name="l00140"></a>00140 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00141"></a>00141 }<a name="l00142"></a>00142 <span class="keywordflow">if</span>( opt-><a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> > 3 ) {<a name="l00143"></a>00143 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#d17dbdaf4e461f67e3b3f41da9e11af9">USART_ERROR_ARGUMENT</a>;<a name="l00144"></a>00144 }<a name="l00145"></a>00145 <a name="l00146"></a>00146 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>, cpuHz );<a name="l00147"></a>00147 <a name="l00148"></a>00148 <span class="keywordflow">if</span>( retval != <a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#2067a9071b47751aad8456bddf70b913">USART_OK</a> ) {<a name="l00149"></a>00149 <span class="keywordflow">return</span> retval;<a name="l00150"></a>00150 }<a name="l00151"></a>00151 <a name="l00152"></a>00152 <span class="keywordflow">if</span>( opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a> == 9 ) {<a name="l00153"></a>00153 <span class="comment">/* charlength set to 9 bits; MODE9 dominates CHRL */</span><a name="l00154"></a>00154 usart->mr |= (1<<AVR32_USART_MR_MODE9_OFFSET);<a name="l00155"></a>00155 } <span class="keywordflow">else</span> {<a name="l00156"></a>00156 <span class="comment">/* CHRL gives the charlength( - 5) when USART_MODE9=0 */</span><a name="l00157"></a>00157 usart->mr |=<a name="l00158"></a>00158 ((opt-><a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a>-5) << AVR32_USART_MR_CHRL_OFFSET);<a name="l00159"></a>00159 }<a name="l00160"></a>00160 <a name="l00161"></a>00161 usart->mr |= (opt-><a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> << AVR32_USART_MR_CHMODE_OFFSET) |<a name="l00162"></a>00162 (opt-><a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> << AVR32_USART_MR_PAR_OFFSET);<a name="l00163"></a>00163
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -