现在STC8H2K12U支持MDU32D了吗?用哪个库函数?
现在STC8H2K12U支持MDU32D了吗?用哪个库函数?哪里有下载?STC8H系列,MDU32D比MDU32C改进了啥,可以直接用MDU32C的库函数吗
<h2>STC8H 系列:MDU32D 与 MDU32C 对比分析</h2>
<hr />
<h3>一、MDU32D 比 MDU32C 的主要改进</h3>
<p>根据手册内容,MDU32D(增强型硬件32位乘除法器)相比 MDU32C 的改进非常显著,主要体现在以下几个方面:</p>
<h4>1️⃣ 📈 <strong>新增大量 16 位运算指令</strong></h4>
<p>MDU32C <strong>仅支持 32 位运算</strong>,而 MDU32D <strong>新增了一整套 16 位运算</strong>:</p>
<table>
<thead>
<tr>
<th>运算类型</th>
<th>MDU32C</th>
<th>MDU32D</th>
</tr>
</thead>
<tbody>
<tr>
<td>32位乘法(结果32位)</td>
<td>✅ CMD=2</td>
<td>✅ CMD=2</td>
</tr>
<tr>
<td>32位无符号除法</td>
<td>✅ CMD=4</td>
<td>✅ CMD=4</td>
</tr>
<tr>
<td>32位有符号除法</td>
<td>✅ CMD=6</td>
<td>✅ CMD=6</td>
</tr>
<tr>
<td>数据规格化(32位)</td>
<td>✅ CMD=8</td>
<td>✅ CMD=8</td>
</tr>
<tr>
<td>逻辑左移/右移(32位)</td>
<td>✅ CMD=10</td>
<td>✅ CMD=10/14</td>
</tr>
<tr>
<td>算术右移(32位)</td>
<td>✅ CMD=11</td>
<td>✅ CMD=12</td>
</tr>
<tr>
<td>32位加减法</td>
<td>✅ CMD=12/14</td>
<td>✅ CMD=16/18</td>
</tr>
<tr>
<td><strong>16位无符号除法</strong></td>
<td>❌</td>
<td>✅<strong>CMD=5</strong></td>
</tr>
<tr>
<td><strong>16位有符号除法</strong></td>
<td>❌</td>
<td>✅<strong>CMD=7</strong></td>
</tr>
<tr>
<td><strong>16位数据规格化</strong></td>
<td>❌</td>
<td>✅<strong>CMD=9</strong></td>
</tr>
<tr>
<td><strong>16位逻辑/算术移位</strong></td>
<td>❌</td>
<td>✅<strong>CMD=11/13/15</strong></td>
</tr>
<tr>
<td><strong>16位加减法</strong></td>
<td>❌</td>
<td>✅<strong>CMD=17/19</strong></td>
</tr>
<tr>
<td><strong>32位乘法(结果64位)</strong></td>
<td>❌</td>
<td>✅<strong>CMD=20/22</strong></td>
</tr>
<tr>
<td><strong>16位乘法(结果32位)</strong></td>
<td>❌</td>
<td>✅<strong>CMD=21/23</strong></td>
</tr>
</tbody>
</table>
<h4>2️⃣ 🚀 <strong>运算速度提升</strong></h4>
<ul>
<li><strong>32位乘法</strong>:MDU32C 需 <strong>3个时钟</strong> → MDU32D 仅需 <strong>2个时钟</strong></li>
<li>新增的 16 位运算普遍比对应的 32 位运算更快(如 16位除法 11时钟 vs 32位除法 19时钟)</li>
</ul>
<h4>3️⃣ 🔧 <strong>状态寄存器位定义不同</strong></h4>
<table>
<thead>
<tr>
<th>位</th>
<th>MDU32C (MDU32SR)</th>
<th>MDU32D (MDU32SR)</th>
</tr>
</thead>
<tbody>
<tr>
<td>B7</td>
<td><strong>CY</strong>(进位标志)</td>
<td>-(保留)</td>
</tr>
<tr>
<td>B6</td>
<td><strong>OV</strong>(溢出标志)</td>
<td>-(保留)</td>
</tr>
<tr>
<td>B5</td>
<td>SRL</td>
<td><strong>DBZ</strong>(除零标志)</td>
</tr>
<tr>
<td>B4-B0</td>
<td>SC(状态码)</td>
<td>SC(状态码)</td>
</tr>
</tbody>
</table>
<blockquote>
<p>⚠️ 两个模块的 SFR <strong>地址完全相同</strong>(MDU32SR=0xDD,MDU32CR=0xED),但**状态寄存器的位含义有差异**。</p>
</blockquote>
<h4>4️⃣ 🎯 <strong>CMD 命令码大幅扩展</strong></h4>
<p>MDU32C 仅支持 8 种运算(CMD=0,2,4,6,8,10,11,12,14),MDU32D 扩展到 <strong>24 种运算</strong>(CMD=0~23)。</p>
<hr />
<h3>二、能否直接使用 MDU32C 的库函数?</h3>
<p><strong>可以部分直接使用,但有注意事项:</strong></p>
<table>
<thead>
<tr>
<th>场景</th>
<th>结论</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>基础32位运算</strong>(乘法、除法、规格化、移位、加减法)</td>
<td>✅<strong>基本兼容</strong>。CMD 命令码保持一致,可直接使用</td>
</tr>
<tr>
<td><strong>依赖 CY/OV 标志位的代码</strong>(如检查溢出、进位)</td>
<td>⚠️<strong>不兼容</strong>。MDU32D 的状态寄存器无 CY/OV 位,取而代之的是 DBZ(除零标志)位</td>
</tr>
<tr>
<td><strong>新增的16位运算、64位结果乘法等</strong></td>
<td>❌<strong>不可用</strong>。这些是 MDU32D 独有功能,MDU32C 库函数不包含</td>
</tr>
</tbody>
</table>
<p><strong>官方建议</strong>:</p>
<ul>
<li><strong>推荐使用 STC 官方为 MDU32D 配套的库函数/头文件</strong>(在 STC-ISP 下载软件中可获取),这样才能充分利用新增的16位运算和64位乘法功能,同时正确处理状态寄存器差异</li>
<li>如果只是简单替换原来 MDU32C 的 32 位乘除加减运算代码,且<strong>不涉及对 CY/OV 的判断</strong>,则基本可以直接使用</li>
</ul>
<hr />
<p><strong>信息来源</strong>:STC8H 数据手册第36章《MDU32C硬件32位乘除法器》、第37章《MDU32D增强型硬件32位乘除法器》</p>
<hr />
<p><a href="https://www.stcaimcu.com/plugin.php?id=twpx_xunsearch&mod=forum&q=STC8H%E7%B3%BB%E5%88%97%20MDU32D%E6%AF%94%20MDU32C%E6%94%B9%E8%BF%9B%E4%BA%86%E5%95%A5%20%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E7%94%A8%20MDU32C%E7%9A%84%E5%BA%93%E5%87%BD%E6%95%B0%E5%90%97&f=_all&m=yes&syn=yes&s=relevance&fid=0">🔍 搜索 "STC8H系列 MDU32D比 MDU32C改进了啥 可以直接用 MDU32C的库函数吗"</a></p>
<p><strong>📌 相关论坛讨论</strong></p>
<ol>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&tid=8364&highlight=STC8H%E7%B3%BB%E5%88%97%EF%BC%8CMDU32D%E6%AF%94MDU32C%E6%94%B9%E8%BF%9B%E4%BA%86%E5%95%A5%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E7%94%A8MDU32C%E7%9A%84%E5%BA%93%E5%87%BD%E6%95%B0%E5%90%97&page=2&extra=#pid79347">32位加减乘除,STC8位机上的 MDU32C 实测!库函数,STC8H2K32U-45MHz</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5721&highlight=STC8H%E7%B3%BB%E5%88%97%EF%BC%8CMDU32D%E6%AF%94MDU32C%E6%94%B9%E8%BF%9B%E4%BA%86%E5%95%A5%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E7%94%A8MDU32C%E7%9A%84%E5%BA%93%E5%87%BD%E6%95%B0%E5%90%97&page=1&extra=#pid46328">8位的 STC8H单片机加了 MDU32C以后属于32位的单片机吗?</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5576&highlight=STC8H%E7%B3%BB%E5%88%97%EF%BC%8CMDU32D%E6%AF%94MDU32C%E6%94%B9%E8%BF%9B%E4%BA%86%E5%95%A5%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E7%94%A8MDU32C%E7%9A%84%E5%BA%93%E5%87%BD%E6%95%B0%E5%90%97&page=1&extra=#pid43161">STC8新设计将搭载新 MDU32硬件32位加减乘除移位,向64位超算进军,请建议</a></li>
</ol>
【新提醒】MDU32D测试, 加速7.47倍,更快的AI8H2K12U-B版本的一些注意事项 - STC32G144K246 测试版块,PGA/运放,DAC,CAN-FD,主频100MHz以下 国芯人工智能技术交流网站 - AI32位8051交流社区
通常可查手册
或问论坛AI会更快 浮点部分的话,用定点数计算会更好,还可以规避一些bug
页:
[1]