数码之家

 找回密码
 立即注册
搜索
查看: 225|回复: 5

stc8h单片机,需要一个15位或16位PWM 输出任意频率任意占空比的程序---已解决

[复制链接]
发表于 2025-5-30 22:45:36 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 广东梁百万 于 2025-5-31 21:56 编辑

需要用8H1K08或者 8H1K28 单片机,
15位或16位分辨率的PWM 输出, 任意频率 任意占空比的程序,需要用单片机内置的PWM硬件产生波形。
我找了规格书的例程,按例程修改了一下,只能
10位分辨率的输出,
我往PWMA1_CCR1,  写入16位数据,最多只有10位分辨率的输出,
写入数值超过1023就100%  了。


请教还有哪里要设置 才能有15位或16位?  12位也行。






PWMA_PS=0xF0;  //P10输出PWMA1P, P11输出PWMA1N,
PWMA_CCER1=0x00;        //写CCMRx 前必须先清零CCERx 关闭通道        
PWMA_CCMR1=0x68;        //设置CC1 为PWMA输出模式        ,寄存器预装载
PWMA_CCER1=0x01;        //使能CC1 通道        
PWMA_CCR1=100;        //设置占空比时间        
PWMA_ARR=500;        //设置周期时间        
PWMA_ENO=0x01;        //使能PWM1P 端口输出        、
PWMA_BKR=0x80;        //使能主输出        
PWMA_CR1=0x01;        //开始计时

发表于 2025-5-30 23:07:33 | 显示全部楼层
隔行如隔山
回复 支持 反对

使用道具 举报

发表于 2025-5-30 23:46:37 | 显示全部楼层
PWMA_CCR1 = 100;        //设置占空比时间
PWMA_ARR = 500;                //设置周期时间

这两行你改一改嘛.
ARR对应分辨率,
CCR1/ARR就是脉宽

打赏

参与人数 1家元 +20 收起 理由
广东梁百万 + 20 精彩回帖

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2025-5-30 23:48:02 | 显示全部楼层
AAR改成65535就16位了,不过那个PWM频率就低的难看了.

打赏

参与人数 1家元 +20 收起 理由
广东梁百万 + 20 精彩回帖

查看全部打赏

回复 支持 0 反对 0

使用道具 举报

发表于 2025-5-31 00:07:34 | 显示全部楼层
你怕是没理解STC PWM的实现原理!  当然也不怪你,STC总是把简单的东西搞复杂。
。。。PWMA_ARR  周期也就是频率,即一个周期计数的最大值
。。。PWMA_CCR1 占空比,最大值不能超过 PWMA_ARR
想要获得最大分辨率,PWMA_ARR = 0xffff, 当然此时频率最低,两者不可得兼。

打赏

参与人数 1家元 +20 收起 理由
广东梁百万 + 20 精彩回帖

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2025-5-31 10:12:28 来自手机浏览器 | 显示全部楼层
kpj001 发表于 2025-5-31 00:07
你怕是没理解STC PWM的实现原理!  当然也不怪你,STC总是把简单的东西搞复杂。
。。。PWMA_ARR  周期也就 ...

昨晚折腾了一晚,基本知道什么回事了,就是那个PWMA-ARR的数值限制了。
昨晚还在STC网站的论坛上发贴问了,竟然是机器人Ai回复,回复的内容是用定时器中断来做16位pwm,那些语句也看不明。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-9 06:33 , Processed in 0.156000 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表