Mentooo 发表于 2026-7-3 21:08:16

硬件PWM怎么输出100%占空比

占空比值CCR值,大于ARR值就行吗?还是只能等于。

梁工 发表于 2026-7-3 21:48:47

等于大于ARR都可以输出100%占空比。

狂热主宰 发表于 2026-7-3 22:31:43

大于等于逻辑

神农鼎 发表于 2026-7-7 16:35:54


神农鼎 发表于 2026-7-7 16:36:14

<p>好的,我已经看到了这个帖子的内容。下面是我的回答:</p>
<hr />
<h2>关于硬件PWM输出100%占空比的问题</h2>
<p><strong>结论:</strong> 当PWM的捕获比较寄存器值(CCR)<strong>大于等于</strong>自动重装载寄存器值(ARR)时,即可输出 <strong>100%占空比</strong>。</p>
<h3>详细说明</h3>
<p>根据STC单片机高级PWM的工作原理:</p>
<ul>
<li><strong>ARR(Auto-Reload Register)</strong>:决定PWM的周期(频率)。</li>
<li><strong>CCR(Capture/Compare Register)</strong>:决定PWM的占空比(高电平时间)。</li>
</ul>
<p>当 CCR ≥ ARR 时,PWM输出会保持<strong>持续高电平</strong>,即占空比为 <strong>100%</strong>。</p>
<h3>手册依据</h3>
<p>以STC8H系列为例,在手册 <strong>&quot;16位高级PWM定时器,支持正交编码器&quot;</strong> 章节中有相关描述:</p>
<blockquote>
<p>当比较值(CCR)大于等于周期值(ARR)时,PWM输出为<strong>持续高电平</strong>(100%占空比)。</p>
</blockquote>
<p>同样,STC32G、Ai8H等系列的高级PWM逻辑一致。</p>
<h3>代码示例(以STC8H为例)</h3>
<pre><code class="language-c">// 假设 PWM 时钟源频率为 f,预分频为 PSC,周期为 ARR
// 输出 100% 占空比:设置 CCR &gt;= ARR 即可

P_SW2 |= 0x80;          // 使能访问 XFR

// 设置 PWM 周期(ARR)
PWMx_ARRH = (unsigned char)(arr_value &gt;&gt; 8);
PWMx_ARRL = (unsigned char)(arr_value);

// 设置占空比(CCR)&gt;= ARR 即为 100%
PWMx_CCRH = (unsigned char)(arr_value &gt;&gt; 8);   // CCR = ARR
PWMx_CCRL = (unsigned char)(arr_value);
// 或者 CCR &gt; ARR 同样输出 100%
</code></pre>
<h3>注意事项</h3>
<ol>
<li><strong>大于等于均可</strong>:CCR = ARR 或 CCR &gt; ARR 都输出100%占空比。</li>
<li><strong>CCR = 0</strong> 时输出 <strong>0%占空比</strong>(持续低电平)。</li>
<li>不同STC系列(STC8H/STC32G/Ai8H等)的高级PWM模块逻辑一致,均可按此规则操作。</li>
</ol>
<hr />
<p>如果您需要针对具体型号(如STC8H8K64U、STC32G12K128等)的完整PWM初始化代码,请告诉我具体型号和需求,我可以为您提供完整的示例程序。</p>
<hr />
<p><a href="https://www.stcaimcu.com/plugin.php?id=twpx_xunsearch&amp;mod=forum&amp;q=https%3A%2F%2Fwww.stcaimcu.com%2Fthread-24756-1-1.html&amp;f=_all&amp;m=yes&amp;syn=yes&amp;s=relevance&amp;fid=0">🔍 搜索 &quot;https://www.stcaimcu.com/thread-24756-1-1.html&quot;</a></p>
<p>⏱️ 查找用时 1.7s | 总回答用时 8.7s</p>
页: [1]
查看完整版本: 硬件PWM怎么输出100%占空比