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

📄 uart_8c.html

📁 使用AVR单片机控制步进电机的软件代码
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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>AVR446 - Linear speed control of stepper motor: uart.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div><h1>uart.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>Uart routines. <p><ul><li>File: <a class="el" href="uart_8c.html">uart.c</a></li><li>Compiler: IAR EWAAVR 4.11A</li><li>Supported devices: All devices with a 16 bit timer can be used. The example is written for ATmega48</li><li>AppNote: AVR446 - Linear speed control of stepper motor</li></ul><p><dl 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:avr@atmel.com">avr@atmel.com</a></dd></dl><dl compact><dt><b>Name</b></dt><dd>RELEASE_1_0 </dd></dl><dl compact><dt><b>Revision</b></dt><dd>1.2 </dd></dl><dl compact><dt><b>RCSfile</b></dt><dd><a class="el" href="uart_8c.html">uart.c</a>,v </dd></dl><dl compact><dt><b>Date</b></dt><dd>2006/05/08 12:25:58 </dd></dl><p>Definition in file <a class="el" href="uart_8c-source.html">uart.c</a>.<p><code>#include &lt;ioavr.h&gt;</code><br><code>#include "<a class="el" href="global_8h-source.html">global.h</a>"</code><br><code>#include "<a class="el" href="uart_8h-source.html">uart.h</a>"</code><br><code>#include "<a class="el" href="sm__driver_8h-source.html">sm_driver.h</a>"</code><br><code>#include "<a class="el" href="speed__cntr_8h-source.html">speed_cntr.h</a>"</code><br><p>Include dependency graph for uart.c:<p><center><img src="uart_8c__incl.png" border="0" usemap="#uart.c_map" alt="Include dependency graph"></center><map name="uart.c_map"><area href="global_8h.html" shape="rect" coords="92,7,161,34" alt=""><area href="uart_8h.html" shape="rect" coords="185,7,241,34" alt=""><area href="sm__driver_8h.html" shape="rect" coords="265,7,356,34" alt=""><area href="speed__cntr_8h.html" shape="rect" coords="380,7,479,34" alt=""></map><p><a href="uart_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>Defines</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a0">BAUD</a>&nbsp;&nbsp;&nbsp;11</td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a6">InitUART</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init of uart.  <a href="#a6"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a10">uart_FlushRxBuffer</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Empties the uart RX buffer.  <a href="#a10"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>__interrupt void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a11">UART_RX_interrupt</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">RX interrupt handler.  <a href="#a11"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a7">uart_SendByte</a> (unsigned char data)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">send a byte.  <a href="#a7"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a9">uart_SendInt</a> (int x)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends a integer.  <a href="#a9"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a8">uart_SendString</a> (unsigned char Str[])</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends a string.  <a href="#a8"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>__interrupt void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a12">UART_TX_interrupt</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">TX interrupt handler.  <a href="#a12"></a><br><br></td></tr><tr><td colspan=2><br><h2>Variables</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a1">UART_RxBuffer</a> [UART_RX_BUFFER_SIZE]</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Buffer with received string from uart.  <a href="#a1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>unsigned char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="uart_8c.html#a2">UART_RxPtr</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">RX buffer pointer.  <a href="#a2"></a><br><br></td></tr></table><hr><h2>Define Documentation</h2><a class="anchor" name="a0" doxytag="uart.c::BAUD" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> #define BAUD&nbsp;&nbsp;&nbsp;11          </td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><p>Referenced by <a class="el" href="uart_8c-source.html#l00045">InitUART()</a>.    </td>  </tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="a6" doxytag="uart.c::InitUART" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void InitUART           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Init of uart. <p>Setup uart. The <a class="el" href="uart_8c.html#a0">BAUD</a> value must be modified according to clock frqequency. Refer to datasheet for details. <p>Definition at line <a class="el" href="uart_8c-source.html#l00045">45</a> of file <a class="el" href="uart_8c-source.html">uart.c</a>.<p>References <a class="el" href="uart_8c.html#a0">BAUD</a>, and <a class="el" href="uart_8c-source.html#l00029">UART_RxPtr</a>.<p>Referenced by <a class="el" href="main_8c-source.html#l00042">Init()</a>.<p><pre class="fragment"><div>00046 {00047   <span class="comment">// Set baud rate. 19.2 kbps trasfer speed running at 8 MHz.</span>00048 <span class="comment">//#define BAUD 25</span>00049   <span class="comment">// Set baud rate. 19.2 kbps trasfer speed running at 3.6864 MHz.</span>00050 <span class="preprocessor">#define BAUD 11</span>00051 <span class="preprocessor"></span>00052   UBRR0H = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(<a class="code" href="uart_8c.html#a0">BAUD</a>&gt;&gt;8);00053   UBRR0L = (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)<a class="code" href="uart_8c.html#a0">BAUD</a>;00054   <span class="comment">/* Enable receiver and transmitter, rx and tx int */</span>00055   UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0)|(1&lt;&lt;RXCIE0)|(1&lt;&lt;TXCIE0);00056   <span class="comment">/* Set frame format: 8data, 1stop bit */</span>00057   UCSR0C = (3&lt;&lt;UCSZ00);00058 00059   <span class="comment">// Flush Buffers</span>00060   <a class="code" href="uart_8c.html#a2">UART_RxPtr</a> = 0;00061   UART_TxTail = 0;00062   UART_TxHead = 0;00063 }</div></pre>    </td>  </tr></table><a class="anchor" name="a10" doxytag="uart.c::uart_FlushRxBuffer" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void uart_FlushRxBuffer           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Empties the uart RX buffer. <p>Empties the uart RX buffer.<p><dl compact><dt><b>Returns:</b></dt><dd>x Integer to be sent. </dd></dl><p>Definition at line <a class="el" href="uart_8c-source.html#l00135">135</a> of file <a class="el" href="uart_8c-source.html">uart.c</a>.<p>References <a class="el" href="uart_8c-source.html#l00027">UART_RxBuffer</a>, and <a class="el" href="uart_8c-source.html#l00029">UART_RxPtr</a>.<p>Referenced by <a class="el" href="main_8c-source.html#l00062">main()</a>.<p><pre class="fragment"><div>00135                              {00136   <a class="code" href="uart_8c.html#a2">UART_RxPtr</a> = 0;00137   <a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[<a class="code" href="uart_8c.html#a2">UART_RxPtr</a>] = 0;00138 }</div></pre>    </td>  </tr></table><a class="anchor" name="a11" doxytag="uart.c::UART_RX_interrupt" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> __interrupt void UART_RX_interrupt           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>RX interrupt handler. <p>RX interrupt handler. RX interrupt always enabled. <p>Definition at line <a class="el" href="uart_8c-source.html#l00146">146</a> of file <a class="el" href="uart_8c-source.html">uart.c</a>.<p>References <a class="el" href="global_8h-source.html#l00033">GLOBAL_FLAGS::cmd</a>, <a class="el" href="global_8h-source.html#l00025">FALSE</a>, <a class="el" href="global_8h-source.html#l00031">GLOBAL_FLAGS::running</a>, <a class="el" href="main_8c-source.html#l00033">status</a>, <a class="el" href="global_8h-source.html#l00024">TRUE</a>, <a class="el" href="uart_8h-source.html#l00024">UART_RX_BUFFER_SIZE</a>, <a class="el" href="uart_8c-source.html#l00027">UART_RxBuffer</a>, <a class="el" href="uart_8c-source.html#l00029">UART_RxPtr</a>, and <a class="el" href="uart_8c-source.html#l00073">uart_SendByte()</a>.<p><pre class="fragment"><div>00147 {00148   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> data;00149 00150   <span class="comment">// Read the received data.</span>00151   data = UDR0;00152 00153   <span class="keywordflow">if</span>(<a class="code" href="main_8c.html#a0">status</a>.<a class="code" href="structGLOBAL__FLAGS.html#o2">running</a> == <a class="code" href="global_8h.html#a1">FALSE</a>){00154     <span class="comment">// If backspace.</span>00155     <span class="keywordflow">if</span>(data == <span class="charliteral">'\b'</span>)00156     {00157       <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a2">UART_RxPtr</a>)00158       <span class="comment">// Done if not at beginning of buffer.</span>00159       {00160         <a class="code" href="uart_8h.html#a8">uart_SendByte</a>(<span class="charliteral">'\b'</span>);00161         <a class="code" href="uart_8h.html#a8">uart_SendByte</a>(<span class="charliteral">' '</span>);00162         <a class="code" href="uart_8h.html#a8">uart_SendByte</a>(<span class="charliteral">'\b'</span>);00163         <a class="code" href="uart_8c.html#a2">UART_RxPtr</a>--;00164         <a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[<a class="code" href="uart_8c.html#a2">UART_RxPtr</a>]=0x00;00165       }00166     }00167     <span class="comment">// Not backspace.</span>00168     <span class="keywordflow">else</span>00169     {00170       <span class="comment">// Put the data into RxBuf</span>00171       <span class="comment">// and place 0x00 after it. If buffer is full,</span>00172       <span class="comment">// data is written to UART_RX_BUFFER_SIZE - 1.</span>00173       <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a2">UART_RxPtr</a> &lt; (<a class="code" href="uart_8h.html#a0">UART_RX_BUFFER_SIZE</a> - 1)){00174         <a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[<a class="code" href="uart_8c.html#a2">UART_RxPtr</a>] = data;00175         <a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[<a class="code" href="uart_8c.html#a2">UART_RxPtr</a> + 1]=0x00;00176         <a class="code" href="uart_8c.html#a2">UART_RxPtr</a>++;00177       }00178       <span class="keywordflow">else</span>00179       {00180         <a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[<a class="code" href="uart_8c.html#a2">UART_RxPtr</a> - 1] = data;00181         <a class="code" href="uart_8h.html#a8">uart_SendByte</a>(<span class="charliteral">'\b'</span>);00182       }00183       <span class="comment">// If enter.</span>00184       <span class="keywordflow">if</span>(data == 13){00185         <a class="code" href="main_8c.html#a0">status</a>.<a class="code" href="structGLOBAL__FLAGS.html#o0">cmd</a> = <a class="code" href="global_8h.html#a0">TRUE</a>;00186       }00187       <span class="keywordflow">else</span>00188         <a class="code" href="uart_8h.html#a8">uart_SendByte</a>(data);00189     }00190   }00191 }</div></pre><p>Here is the call graph for this function:<p><center><img src="uart_8c_a11_cgraph.png" border="0" usemap="#uart_8c_a11_cgraph_map" alt=""></center><map name="uart_8c_a11_cgraph_map"><area href="uart_8h.html#a8" shape="rect" coords="198,7,307,33" alt=""></map>    </td>  </tr></table><a class="anchor" name="a7" doxytag="uart.c::uart_SendByte" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>

⌨️ 快捷键说明

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