帕拉丁 发表于 2024-12-22 17:46:14

各位大佬好,关于8H1K调整占空比的问题,谢谢各位大佬了

<p>我刚刚开始学习 8H系列单片机 ,看手册看的晕头转向 尝试自己写了这么一段代码 意图输出一个简单的PWM。 目前的状况是 可以在预设的3个引脚上输出3路PWMA。但是想输出第四路 既P1.6的 PWM4P 却无法输出(已检查P.16口正常工作 )。并且 在程序中 直接写入3个寄存器尝试更改PWM频率 以此改变 RGB灯的颜色 失败。 请各位大佬帮忙看看问题到底出在哪里 谢谢了。</p>
<p>写入寄存器操作如下:</p>
<p>PWMA_CCR1=1200;<br />
PWMA_CCR2=0;<br />
PWMA_CCR3=0;</p>
<pre><code>                        delay_ms(5000);

                        PWMA_CCR1=0;
                        PWMA_CCR2=0;
                        PWMA_CCR3=0;
</code></pre>
<p>PWM设置代码如下</p>
<p>// PWM初始化<br />
void PWMA_config(void) {<br />
// 扩展寄存器访问使能<br />
P_SW2 |= 0x80;</p>
<pre><code>// 配置全局参数
PWMA_PSCR = 0x0000;          // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR+1)
PWMA_DTR= 24;            // 死区时间配置
PWMA_ARRH = HIGHBYTE(2400);// 自动重装载寄存器, 控制PWM周期
PWMA_ARRL = LOWBYTE(2400);

// 清除状态寄存器
PWMA_SR1 = 0;
PWMA_SR2 = 0;

// 初始化通道配置
PWMA_CCMR1 = 0x68; // 设置通道1和通道2为PWM模式,并开启预装载功能
PWMA_CCMR2 = 0x68; // 设置通道3为PWM模式,并开启预装载功能
PWMA_CCMR3 = 0x68; // 设置通道4为PWM模式,并开启预装载功能

// 设置初始占空比
PWMA_CCR1 = 0;// PWM1 占空比
PWMA_CCR2 = 0;// PWM2 占空比
PWMA_CCR3 = 0; // PWM3 占空比
PWMA_CCR4 = 0; // PWM4 占空比

// 使能通道输出并设置极性(高电平有效)
PWMA_CCER1 = 0x55; // 使能通道1和通道2输出,高电平有效
PWMA_CCER2 = 0x55; // 使能通道3和通道4输出,高电平有效

// 设置PWM输出引脚选择
PWMA_PS = 0x00; // 默认引脚配置,选择P1.x引脚

// 使能PWM输出引脚
PWMA_ENO |= 0x15; // 仅仅使能 P1.0 P1.2 P1.4 PWMP输出

// 使能主输出
PWMA_BKR = 0x80;

// 开始计时
PWMA_CR1 |= 0x81; // 使能计数器,允许自动重装载寄存器缓冲,边沿对齐模式,向上计数

// 产生一次更新事件
PWMA_EGR = 0x01;
</code></pre>
<p>}</p>

DebugLab 发表于 2024-12-22 19:22:53


ENO4P没开呀




帕拉丁 发表于 2024-12-22 20:14:20

DebugLab 发表于 2024-12-22 19:22
ENO4P没开呀
谢谢大佬   在这段代码中 以前这个寄存器是设置4路P引脚输出的,前三路正常输出,但是第四路不行,,后来我后来才改成 这样把1.6 1.7 屏蔽掉了。。。。现在是 PWM的占空比 在程序里怎么都改不了 很奇怪,请问大佬知道这是为什么吗

梁工 发表于 2024-12-22 23:31:12

请下载附件,解压缩,直接下载HEX文件测试。

STC8H系列-高级PWM范例程序下载,2024/1/3 更新
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1779
(出处: 国芯技术交流网站)

帕拉丁 发表于 2025-1-9 19:46:30

谢谢梁工,依旧只能输出3路PWM。3路也够用了, 以后慢慢研究吧。
页: [1]
查看完整版本: 各位大佬好,关于8H1K调整占空比的问题,谢谢各位大佬了