⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testsuite_2bravo__validation_2usart_2usart_8c-source.html

📁 avr32100.zip Embedded demo
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00122"></a>00122                 <span class="comment">/* CHRL gives the charlength( - 5) when USART_MODE9=0 */</span><a name="l00123"></a>00123                 usart-&gt;mr |=<a name="l00124"></a>00124                         ((opt-&gt;<a class="code" href="structusart__options__t.html#a6b77cc05829d2e70ee7f96194c6ce23">charlength</a>-5) &lt;&lt; AVR32_USART_MR_CHRL_OFFSET);<a name="l00125"></a>00125         }<a name="l00126"></a>00126 <a name="l00127"></a>00127         usart-&gt;mr |= (opt-&gt;<a class="code" href="structusart__options__t.html#0dc365b8779891743180e9b69116f5ea">channelmode</a> &lt;&lt; AVR32_USART_MR_CHMODE_OFFSET) |<a name="l00128"></a>00128                      (opt-&gt;<a class="code" href="structusart__options__t.html#85401f7a6f516a5883adc0538dc27f8e">paritytype</a> &lt;&lt; AVR32_USART_MR_PAR_OFFSET);<a name="l00129"></a>00129 <a name="l00130"></a>00130         <span class="keywordflow">if</span> (opt-&gt;<a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> &gt; 2)<a name="l00131"></a>00131         {<a name="l00132"></a>00132                 <span class="comment">/* Set two stop bits */</span><a name="l00133"></a>00133                 usart-&gt;mr |= (2 &lt;&lt; AVR32_USART_MR_NBSTOP_OFFSET);<a name="l00134"></a>00134                 <span class="comment">/* And a timeguard period gives the rest */</span><a name="l00135"></a>00135                 usart-&gt;ttgr = (opt-&gt;<a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a>-2);<a name="l00136"></a>00136         }<a name="l00137"></a>00137         <span class="keywordflow">else</span><a name="l00138"></a>00138                 <span class="comment">/* Insert 1, 1.5 or 2 stop bits */</span><a name="l00139"></a>00139                 usart-&gt;mr |= (opt-&gt;<a class="code" href="structusart__options__t.html#433a6ede2186d42b4cf19ef4b370cd61">stopbits</a> &lt;&lt; AVR32_USART_MR_NBSTOP_OFFSET);<a name="l00140"></a>00140 <a name="l00141"></a>00141         <span class="comment">/* Setup complete; enable communication */</span><a name="l00142"></a>00142         <span class="comment">/* Enable input and output */</span><a name="l00143"></a>00143         usart-&gt;cr |= (1&lt;&lt;AVR32_USART_CR_TXEN_OFFSET) |<a name="l00144"></a>00144                      (1&lt;&lt;AVR32_USART_CR_RXEN_OFFSET);<a name="l00145"></a>00145 <a name="l00146"></a>00146         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00147"></a>00147 }<a name="l00148"></a>00148 <a name="l00149"></a>00149 <span class="comment">/*</span><a name="l00150"></a>00150 <span class="comment"> * Description: This function is meant to be run after rs232_init().</span><a name="l00151"></a>00151 <span class="comment"> *              It sets up the usart to use handshaking in its communication.</span><a name="l00152"></a>00152 <span class="comment"> * Arguments:   *usart:    Base address of the usart</span><a name="l00153"></a>00153 <span class="comment"> *              *opt:      Options needed to set up RS232 communcation (see usart_options_t)</span><a name="l00154"></a>00154 <span class="comment"> *                              cpu_hz:    The clock frequency of the usart module</span><a name="l00155"></a>00155 <span class="comment"> *              software_handshaking:</span><a name="l00156"></a>00156 <span class="comment"> *                         1= Use software handshaking</span><a name="l00157"></a>00157 <span class="comment"> *                         0= Use hardware handshaking (requires extra wiring)</span><a name="l00158"></a>00158 <span class="comment"> *              xon_char:  Character sent from receiver to transmitter when more</span><a name="l00159"></a>00159 <span class="comment"> *                         data can be sent. (Software handshaking only)</span><a name="l00160"></a>00160 <span class="comment"> *              xoff_char: Sent from recv. to trans. when recv. buffers are full (sw)</span><a name="l00161"></a>00161 <span class="comment"> * Returns:     USART_SUCCESS or USART_INVALID_INPUT</span><a name="l00162"></a>00162 <span class="comment"> */</span><a name="l00163"></a><a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#b00d34610c3eed1fadf32cc3d5c35dbf">00163</a> <span class="keywordtype">int</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#b00d34610c3eed1fadf32cc3d5c35dbf">usart_init_handshaking</a>(<span class="keyword">volatile</span> avr32_usart_t * usart, <span class="keyword">struct</span> <a class="code" href="structusart__options__t.html">usart_options_t</a> * opt,<a name="l00164"></a>00164                            <span class="keywordtype">long</span> cpu_hz, <span class="keywordtype">int</span> software_handshaking,<a name="l00165"></a>00165                            <span class="keywordtype">char</span> xon_char, <span class="keywordtype">char</span> xoff_char)<a name="l00166"></a>00166 {<a name="l00167"></a>00167         <span class="keywordtype">int</span> retval;<a name="l00168"></a>00168 <a name="l00169"></a>00169         <span class="comment">/* First: Setup standard RS323 */</span><a name="l00170"></a>00170         <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="l00171"></a>00171                 <span class="keywordflow">return</span> retval;<a name="l00172"></a>00172 <a name="l00173"></a>00173         <span class="keywordflow">if</span> (software_handshaking == 0)<a name="l00174"></a>00174         {<a name="l00175"></a>00175                 <span class="comment">/* Clear previous mode */</span><a name="l00176"></a>00176                 usart-&gt; mr &amp;= ~(0xf &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00177"></a>00177                 <span class="comment">/* Hardware handshaking */</span><a name="l00178"></a>00178                 usart-&gt; mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#20f58bd59d4177ad2981c8fa338a95af">USART_MODE_HW_HSH</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00179"></a>00179         }<a name="l00180"></a>00180         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (software_handshaking == 1)<a name="l00181"></a>00181         {<a name="l00182"></a>00182                 <span class="comment">/* Clear previous mode */</span><a name="l00183"></a>00183                 usart-&gt; mr &amp;= ~(0xf &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00184"></a>00184                 <span class="comment">/* Software handshaking */</span><a name="l00185"></a>00185                 usart-&gt; mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#1af49d7b84d7323c6842945413559e94">USART_MODE_SW_HSH</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00186"></a>00186                 <span class="comment">/* Set XON and XOFF characters */</span><a name="l00187"></a>00187                 usart-&gt;xxr = (xon_char &lt;&lt; AVR32_USART_XXR_XON_OFFSET) |<a name="l00188"></a>00188                              (xoff_char &lt;&lt; AVR32_USART_XXR_XOFF_OFFSET);<a name="l00189"></a>00189         }<a name="l00190"></a>00190         <span class="keywordflow">else</span><a name="l00191"></a>00191                 <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#50b4e9378f434da8823badca3af2f15d">USART_INVALID_INPUT</a>;<a name="l00192"></a>00192 <a name="l00193"></a>00193         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00194"></a>00194 }<a name="l00195"></a>00195 <a name="l00196"></a>00196 <span class="comment">/*</span><a name="l00197"></a>00197 <span class="comment"> * Description: Setup the usart to use the IrDA protocol</span><a name="l00198"></a>00198 <span class="comment"> * Arguments:   *usart:      Base address of the usart</span><a name="l00199"></a>00199 <span class="comment"> *              *opt:        Options needed to set up RS232 communcation (see usart_options_t)</span><a name="l00200"></a>00200 <span class="comment"> *                              cpu_hz:          The module's clock frequency</span><a name="l00201"></a>00201 <span class="comment"> *              irda_filter: Counter used to seperate received ones from zeros</span><a name="l00202"></a>00202 <span class="comment"> * Returns:     USART_SUCCESS or USART_INVALID_INPUT</span><a name="l00203"></a>00203 <span class="comment"> */</span><a name="l00204"></a><a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#fe90cc3b0056aa859f9cd075f40800fe">00204</a> <span class="keywordtype">int</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#fe90cc3b0056aa859f9cd075f40800fe">usart_init_IrDA</a>(<span class="keyword">volatile</span> avr32_usart_t * usart, <span class="keyword">struct</span> <a class="code" href="structusart__options__t.html">usart_options_t</a> * opt,<a name="l00205"></a>00205                     <span class="keywordtype">long</span> cpu_hz, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> irda_filter)<a name="l00206"></a>00206 {<a name="l00207"></a>00207         <span class="keywordtype">int</span> retval;<a name="l00208"></a>00208 <a name="l00209"></a>00209         <span class="comment">/* First: Setup standard RS323 */</span><a name="l00210"></a>00210         <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="l00211"></a>00211                 <span class="keywordflow">return</span> retval;<a name="l00212"></a>00212 <a name="l00213"></a>00213         <span class="comment">/* Set IrDA counter */</span><a name="l00214"></a>00214         usart-&gt;ifr = irda_filter;<a name="l00215"></a>00215 <a name="l00216"></a>00216         <span class="comment">/* Activate "low-pass filtering" of input */</span><a name="l00217"></a>00217         usart-&gt;mr |= (1 &lt;&lt; AVR32_USART_MR_FILTER_OFFSET);<a name="l00218"></a>00218         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00219"></a>00219 }<a name="l00220"></a>00220 <a name="l00221"></a>00221 <span class="comment">/*</span><a name="l00222"></a>00222 <span class="comment"> * Description: Setup the usart to use the Modem protocol, activating special inputs/outputs</span><a name="l00223"></a>00223 <span class="comment"> * Arguments:   *usart: Base address of the usart</span><a name="l00224"></a>00224 <span class="comment"> *              *opt:   Options needed to set up RS232 communcation (see usart_options_t)</span><a name="l00225"></a>00225 <span class="comment">*                               cpu_hz:          The module's clock frequency</span><a name="l00226"></a>00226 <span class="comment"> * Returns:     USART_SUCCESS or USART_INVALID_INPUT</span><a name="l00227"></a>00227 <span class="comment"> */</span><a name="l00228"></a><a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#5788e19292e7392d88925587f565f31b">00228</a> <span class="keywordtype">int</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#5788e19292e7392d88925587f565f31b">usart_init_modem</a>(<span class="keyword">volatile</span> avr32_usart_t * usart, <span class="keyword">struct</span> <a class="code" href="structusart__options__t.html">usart_options_t</a> * opt, <span class="keywordtype">long</span> cpu_hz)<a name="l00229"></a>00229 {<a name="l00230"></a>00230         <span class="keywordtype">int</span> retval;<a name="l00231"></a>00231 <a name="l00232"></a>00232         <span class="comment">/* First: Setup standard RS323 */</span><a name="l00233"></a>00233         <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="l00234"></a>00234                 <span class="keywordflow">return</span> retval;<a name="l00235"></a>00235 <a name="l00236"></a>00236         <span class="comment">/* Clear previous mode */</span><a name="l00237"></a>00237         usart-&gt; mr &amp;= ~(0xf &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00238"></a>00238         <span class="comment">/* Set Modem mode */</span><a name="l00239"></a>00239         usart-&gt; mr |= (<a class="code" href="testsuite_2bravo__validation_2pdc_2usart_8h.html#e01dfbdf6f2d1c148b0320e19f8fa98e">USART_MODE_MODEM</a> &lt;&lt; AVR32_USART_MR_USART_MODE_OFFSET);<a name="l00240"></a>00240         <span class="keywordflow">return</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8h.html#cbf846773f58a382f10f8daf94797059">USART_SUCCESS</a>;<a name="l00241"></a>00241 }<a name="l00242"></a>00242 <a name="l00243"></a>00243 <a name="l00244"></a>00244 <span class="comment">/*</span><a name="l00245"></a>00245 <span class="comment"> * Description: Setup the usart to use the RS485 protocol</span><a name="l00246"></a>00246 <span class="comment"> * Arguments:   *usart: Base address of the usart</span><a name="l00247"></a>00247 <span class="comment"> *              *opt:   Options needed to set up RS232 communcation (see usart_options_t)</span><a name="l00248"></a>00248 <span class="comment"> *                              cpu_hz: The module's clock frequency</span><a name="l00249"></a>00249 <span class="comment"> * Returns:     USART_SUCCESS: mode successfully initialized</span><a name="l00250"></a>00250 <span class="comment"> *              USART_INVALID_INPUT: one of the arguments are out of valid range</span><a name="l00251"></a>00251 <span class="comment"> *              USART_MODE_FAULT: mode not initialized with multidrop parity</span><a name="l00252"></a>00252 <span class="comment"> */</span><a name="l00253"></a><a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#036dbbb86557bfc093656d58cd9c8417">00253</a> <span class="keywordtype">int</span> <a class="code" href="testsuite_2bravo__validation_2usart_2usart_8c.html#036dbbb86557bfc093656d58cd9c8417">usart_init_rs485</a>(<span class="keyword">volatile</span> avr32_usart_t * usart, <span class="keyword">struct</span> <a class="code" href="structusart__options__t.html">usart_options_t</a> * opt, <span class="keywordtype">long</span> cpu_hz)<a name="l00254"></a>00254 {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -