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

📄 cpmacro_h.html

📁 Controller Area Network Programming Interface Environment Ver0.8。 CanPie版本0.8. CAN总线通讯编程接口源代码。
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD><TITLE>cpmacro.h File Reference</TITLE><LINK HREF="micro.css" REL="stylesheet" TYPE="text/css"></HEAD><BODY BGCOLOR="#FFFFFF"><a name="PageTop"></a><!------ Document Header -------------------------------------------><table border="0" cellspacing="0" cellpadding="0"><tr><td valign="bottom"><img src="pictures/maphead.gif" vspace="0" border="0" height="20"></td></tr></table><table border="0" cellspacing="0" cellpadding="0"><tr><td valign="bottom"><a href="index.html"><img src="pictures/button_index.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="files.html"><img src="pictures/button_files.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="globals.html"><img src="pictures/button_funcs.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom" width="80">&nbsp;</td><td valign="bottom"><a href="annotated.html"><img src="pictures/button_structs.gif" vspace="0" border="0" height="25"></a></td><td valign="bottom"><a href="functions.html"><img src="pictures/button_members.gif" vspace="0" border="0" height="25"></a></td></tr></table><hr noshade width=680 size=1 align=left><!------ Document Start --------------------------------------------><table width=680><tr><td><!-- Generated by Doxygen 1.2.6 --><h1>cpmacro.h File Reference</h1>CANpie macros. <a href="#_details">More...</a><p><code>#include "<a class="el" href="cpconst_h-source.html">cpconst.h</a>"</code><br><p><a href="cpmacro_h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td colspan=2><br><h2>Defines</h2></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a0">CpMacGetBufNum</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgFlags) &gt;&gt; 4)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Get message buffer number.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a1">CpMacGetData</a>(MSG_PTR, POS)&nbsp;&nbsp;&nbsp;( (MSG_PTR)-&gt;v_MsgData[POS] )</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Get Data.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a2">CpMacGetDlc</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgFlags) &amp; CP_MASK_DLC_BITS)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Get Data Length Code.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a3">CpMacGetExtId</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;((MSG_PTR)-&gt;v_MsgId) &amp; CP_MASK_EXT_FRAME</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Get 29 Bit Identifier Value.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a4">CpMacGetStdId</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(_U16)((MSG_PTR)-&gt;v_MsgId) &amp; CP_MASK_STD_FRAME</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Get 11 Bit Identifier Value.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a5">CpMacIsExtended</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgId) &gt;&gt; 31)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Check the frame type.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a6">CpMacIsRemote</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgId) &gt;&gt; 30)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Check for remote frame.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a7">CpMacMsgClear</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgId= 0;(MSG_PTR)-&gt;v_MsgFlags = 0</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Clear message structure.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a8">CpMacSetBufNum</a>(MSG_PTR, VAL)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgFlags &amp;= (~CP_MASK_BUF_BITS); (MSG_PTR)-&gt;v_MsgFlags |= (VAL &lt;&lt; 4)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set message buffer number.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a9">CpMacSetData</a>(MSG_PTR, POS, VAL)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgData[POS] = VAL</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set Data.</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a10">CpMacSetDlc</a>(MSG_PTR, DLC)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgFlags &amp;= (~CP_MASK_DLC_BITS); (MSG_PTR)-&gt;v_MsgFlags |= DLC</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set Data Length Code.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a11">CpMacSetExtId</a>(MSG_PTR, VAL)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgId = VAL | CP_MASK_EXT_BIT</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set 29 Bit Identifier Value.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a12">CpMacSetRemote</a>(MSG_PTR)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgId |= CP_MASK_RTR_BIT</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set RTR bit.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="cpmacro_h.html#a13">CpMacSetStdId</a>(MSG_PTR, VAL)&nbsp;&nbsp;&nbsp;(MSG_PTR)-&gt;v_MsgId = VAL</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Set 11 Bit Identifier Value.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>CANpie macros.<p><p><p> In order to create small and fast code, CANpie supplies a set of macros to access the CAN message structure (<a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>). These macros can be used instead of the functions defined in the <a class="el" href="cpmsg_h.html">cpmsg.h</a> header file. However keep in mind that macros can't be used to check for value ranges or parameter consistence. <p> <b>Example</b> <div class="fragment"><pre> <font class="comment">//--- setup a CAN message ----------------------------------------</font> <a class="code" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>   myMessage; <a class="code" href="cpmacro_h.html#a7">CpMacMsgClear</a>(&amp;myMessage);             <font class="comment">// clear the message</font> <a class="code" href="cpmacro_h.html#a13">CpMacSetStdId</a>(&amp;myMessage, 100, 0);     <font class="comment">// identifier is 100 dec, no RTR</font> <a class="code" href="cpmacro_h.html#a10">CpMacSetDlc</a>(&amp;myMessage, 2);            <font class="comment">// data length code is 2</font> <a class="code" href="cpmacro_h.html#a9">CpMacSetData</a>(&amp;myMessage, 0, 0x11);     <font class="comment">// byte 0 has the value 0x11</font> <a class="code" href="cpmacro_h.html#a9">CpMacSetData</a>(&amp;myMessage, 1, 0x22);     <font class="comment">// byte 1 has the value 0x22</font> <font class="comment">//... do something with it ....</font> <font class="comment">//--- evaluate a message that was received -----------------------</font> <a class="code" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>   receiveMsg; <font class="comment">//... receive the stuff ....</font> <font class="keywordflow">if</font>(<a class="code" href="cpmacro_h.html#a5">CpMacIsExtended</a>(&amp;receiveMsg)) {    <font class="comment">//--- this is an Extended Frame ---------------------</font>    DoExtendedMessageService();    <font class="keywordflow">return</font>; } <font class="keywordflow">if</font>(<a class="code" href="cpmacro_h.html#a6">CpMacIsRemote</a>(&amp;receiveMsg)) {    <font class="comment">//... do something with RTR frames</font> }</pre></div><p><hr><h2>Define Documentation</h2><a name="a0" doxytag="cpmacro.h::CpMacGetBufNum"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacGetBufNum(          </b></td>          <td valign="bottom"><b>MSG_PTR&nbsp;)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgFlags) &gt;&gt; 4)      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get message buffer number.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message<p></td></tr></table></dl>A FullCAN controller has the feature of message buffers. The buffer number is coded in the field v_MsgFlags of the structure <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a>. With this macro the number of the buffer (index starts at 1) can be retrieved.     </td>  </tr></table><a name="a1" doxytag="cpmacro.h::CpMacGetData"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacGetData(          </b></td>          <td valign="bottom"><b>MSG_PTR, POS&nbsp;)&nbsp;&nbsp;&nbsp;( (MSG_PTR)-&gt;v_MsgData[POS] )      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get Data.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr><tr><td valign=top><em>POS</em>&nbsp;</td><td>Zero based index of byte position </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a6">CpMsgGetData</a>()<p></dl>This macro retrieves the data of a CAN message. The parameter POS must be within the range 0 .. 7.     </td>  </tr></table><a name="a2" doxytag="cpmacro.h::CpMacGetDlc"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacGetDlc(          </b></td>          <td valign="bottom"><b>MSG_PTR&nbsp;)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgFlags) &amp; CP_MASK_DLC_BITS)      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get Data Length Code.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a4">CpMsgGetDlc</a>()<p></dl>This macro retrieves the data length code (DLC) of a CAN message.     </td>  </tr></table><a name="a3" doxytag="cpmacro.h::CpMacGetExtId"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacGetExtId(          </b></td>          <td valign="bottom"><b>MSG_PTR&nbsp;)&nbsp;&nbsp;&nbsp;((MSG_PTR)-&gt;v_MsgId) &amp; CP_MASK_EXT_FRAME      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get 29 Bit Identifier Value.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a2">CpMsgGetExtId</a>()<p></dl>This macro retrieves the value for the identifier of an extended frame (CAN 2.0B).     </td>  </tr></table><a name="a4" doxytag="cpmacro.h::CpMacGetStdId"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacGetStdId(          </b></td>          <td valign="bottom"><b>MSG_PTR&nbsp;)&nbsp;&nbsp;&nbsp;(_U16)((MSG_PTR)-&gt;v_MsgId) &amp; CP_MASK_STD_FRAME      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Get 11 Bit Identifier Value.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message </td></tr></table></dl><dl compact><dt><b>See also: </b><dd>The corresponding function <a class="el" href="cpmsg_h.html#a0">CpMsgGetStdId</a>()<p></dl>This macro retrieves the value for the identifier of an standard frame (CAN 2.0A). The value is scaled to an unsigned 16 bit value.     </td>  </tr></table><a name="a5" doxytag="cpmacro.h::CpMacIsExtended"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td nowrap valign="top"><b> #define CpMacIsExtended(          </b></td>          <td valign="bottom"><b>MSG_PTR&nbsp;)&nbsp;&nbsp;&nbsp;(_U08)(((MSG_PTR)-&gt;v_MsgId) &gt;&gt; 31)      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Check the frame type.<p><dl compact><dt><b>Parameters: </b><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>MSG_PTR</em>&nbsp;</td><td>Pointer to a <a class="el" href="struct_CpStruct_CAN.html">CpStruct_CAN</a> message<p></td></tr></table></dl>This macro checks the frame type. If the frame is CAN 2.0A (Standard Frame), the value 0 is returned. If the frame is CAN 2.0B (Extended Frame), the value 1 is returned.     </td>  </tr>

⌨️ 快捷键说明

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