找回密码
 立即注册
楼主: 神***

STC8H/STC32G的PWM输出任意周期和任意占空比的波形

[复制链接]
  • TA的每日心情
    慵懒
    2024-2-22 09:29
  • 签到天数: 38 天

    [LV.5]常住居民I

    5

    主题

    51

    回帖

    285

    积分

    中级会员

    积分
    285
    发表于 2023-11-23 11:31:43 | 显示全部楼层
    梁工 发表于 2023-4-11 21:22
    不知道你看的是哪里的例程,初始化函数都有操作。PWMXPSCR是PWM时钟分频寄存器。PWMA_ARR=500是指周期为5 ...

    梁工 我想问一下 PWM时钟 是系统文件自动配置好了吗?用户只需要配置 PSC ARR,还是用户需要配置系统时钟
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2949

    回帖

    6651

    积分

    超级版主

    积分
    6651
    发表于 2023-11-23 12:06:58 | 显示全部楼层
    PWM时钟建议用户按需配置。比如下面的例子:
    PWMA_PSCR = 11;        // 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0]+1), 边沿对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)), 中央对齐PWM频率 = SYSclk/((PSCR+1)*(AAR+1)*2).
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-22 09:29
  • 签到天数: 38 天

    [LV.5]常住居民I

    5

    主题

    51

    回帖

    285

    积分

    中级会员

    积分
    285
    发表于 2023-11-23 15:28:17 | 显示全部楼层
    梁工 发表于 2023-4-11 21:22
    不知道你看的是哪里的例程,初始化函数都有操作。PWMXPSCR是PWM时钟分频寄存器。PWMA_ARR=500是指周期为5 ...

    梁工  我想问一下  以下代码我配置  P3.3 P3.4的输出引脚是正常的,配置其他的引脚无法正常输出,是不是我那个寄存器配错另外。例如我配置 P1.2 P1.3引脚  PWM1_ENO = 0x0C;   PWM1_CCMR2 = 0x60;  PWM1_CCER1 = 0x50; 这三个关键的引脚看着手册配的,但目前实在无法找出问题原因。求指点。

    void Io_Init(void)
    {
                    PWM1_PSCRH = 0x00;        //预分频寄存器
                    PWM1_PSCRL = 0x04;        //预分频寄存器
                   
                    PWM1_ARRH = 0x80; //设置周期时间  0x80-336HZ 0x40-674HZ
                    PWM1_ARRL = 0x00;
           
                    PWM1_PS = 0x00;  //高级 PWM 通道输出脚选择位

                    PWM1_ENO = 0;
                    PWM1_ENO = 0x0C;

                    PWM1_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
                    PWM1_CCER2 = 0x00;

                    PWM1_CCMR2 = 0x60;         //通道模式配置PWM模式1                        PWM1模式
                    PWM1_CCMR1 = 0x30;         //通道模式配置输出比较模式  翻转模式
                    PWM1_CCER1 = 0x50;//配置通道输出使能和极性
                    PWM1_CCER2 = 0x40;

        PWM1_BKR = 0x80; //使能主输出
        PWM1_IER = 0x04; //使能中断
        PWM1_CR1 |= 0x01; //开始计时,向上计数模式

        EA = 1;     //打开总中断
    }

    点评

    操作初始化之前,要先有下面一句: P_SW2 |= 0x80; //SFR enable  详情 回复 发表于 2023-11-23 15:37
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2949

    回帖

    6651

    积分

    超级版主

    积分
    6651
    发表于 2023-11-23 15:37:31 | 显示全部楼层
    Honsiti 发表于 2023-11-23 15:28
    梁工  我想问一下  以下代码我配置  P3.3 P3.4的输出引脚是正常的,配置其他的引脚无法正常输出,是不是 ...

    操作初始化之前,要先有下面一句:
            P_SW2 |= 0x80;                //SFR enable   
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-22 09:29
  • 签到天数: 38 天

    [LV.5]常住居民I

    5

    主题

    51

    回帖

    285

    积分

    中级会员

    积分
    285
    发表于 2023-11-23 15:43:06 | 显示全部楼层
    梁工 发表于 2023-11-23 15:37
    操作初始化之前,要先有下面一句:
            P_SW2 |= 0x80;                //SFR enable

    我的代码是有的 我只是贴上来的时候删减了。

    点评

    请直接测试我的例程: STC32G-高级PWM范例程序下载 https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1778 (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区) STC8H系列-高级PWM范例程序下载 https://ww  详情 回复 发表于 2023-11-23 15:46
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2949

    回帖

    6651

    积分

    超级版主

    积分
    6651
    发表于 2023-11-23 15:46:47 | 显示全部楼层
    Honsiti 发表于 2023-11-23 15:43
    我的代码是有的 我只是贴上来的时候删减了。

    请直接测试我的例程:

    STC32G-高级PWM范例程序下载
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1778
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

    STC8H系列-高级PWM范例程序下载
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1779
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-22 09:29
  • 签到天数: 38 天

    [LV.5]常住居民I

    5

    主题

    51

    回帖

    285

    积分

    中级会员

    积分
    285
    发表于 2023-11-23 16:26:55 | 显示全部楼层
    梁工 发表于 2023-11-23 15:46
    请直接测试我的例程:

    STC32G-高级PWM范例程序下载

    下完打开只有一个.h文件 是我下的不对吗??

    点评

    还有一个目录的,你仔细找找。不要解压缩在有一堆文件的目录中,那样你很难找到的。  详情 回复 发表于 2023-11-24 00:13
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:55
  • 签到天数: 112 天

    [LV.6]常住居民II

    9

    主题

    90

    回帖

    546

    积分

    高级会员

    积分
    546
    发表于 2023-11-23 21:07:06 | 显示全部楼层
    AIKK 发表于 2023-1-7 13:52
    你好,这个例程他没有设置pwm输出频率,所以导致这个例程周期最大设置65536,也就是最大周期是6ms,就没办 ...

    PWM有时钟分频设置   时钟分下频率可以实现更低的周期
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2949

    回帖

    6651

    积分

    超级版主

    积分
    6651
    发表于 2023-11-24 00:13:40 | 显示全部楼层
    Honsiti 发表于 2023-11-23 16:26
    下完打开只有一个.h文件 是我下的不对吗??

    还有一个目录的,你仔细找找。不要解压缩在有一堆文件的目录中,那样你很难找到的。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-22 09:29
  • 签到天数: 38 天

    [LV.5]常住居民I

    5

    主题

    51

    回帖

    285

    积分

    中级会员

    积分
    285
    发表于 2023-11-24 08:41:26 | 显示全部楼层
    梁工 发表于 2023-11-24 00:13
    还有一个目录的,你仔细找找。不要解压缩在有一堆文件的目录中,那样你很难找到的。 ...

    好像真没有 我下的是贵司提供的  STC8H系列-高级PWM相关程序.rar 文件  但是打开就只有一个 .h  文件,没有其他的文件夹了

    点评

    不可能的,这个程序包已经放了超过7个月,无数的有过户下载过,你还是没有认真看,或者直接双击压缩文件,就有出来了。 为此我再次下载,双击压缩文件,即可看到内容: [attachimg]27704[/attachimg]  详情 回复 发表于 2023-11-24 09:24
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-6 14:03 , Processed in 0.067742 second(s), 64 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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