找回密码
 立即注册
查看: 49|回复: 3

关不了15W4K56S4作高速PWM功能

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-06-20 11:27:24

2

主题

3

回帖

56

积分

注册会员

积分
56
发表于 2025-6-19 13:56:10 | 显示全部楼层 |阅读模式
用15W4K56S4作高速PWM输出后,用按键前面4个档位可以调档,按第5下无法关掉PWM,电机仍有一点转或全速运转。关掉了PWM使能,也无法觖决。求助各位大佬---


                             if(powernum==4)
                                         {
                                             
                                                                                                
                                                           
                                                                        PIN_SW2 |= 0x80;                //使能访问XSFR
                                                                        PWMCFG = 0x00;                  //配置PWM的输出初始电平为低电平
                                                                        PWMCKS = 0x00;                  //选择PWM的时钟为Fosc/(0+1)
                                                                        PWMC = CYCLE;                   //设置PWM周期
                                                                        PWM2T1 = 0x0000;                //设置PWM2第1次反转的PWM计数
                                                                        PWM2T2 = CYCLE * 70L / 100L;    //设置PWM2第2次反转的PWM计数
                                                                                                                                                                                                        //占空比为(PWM2T2-PWM2T1)/PWMC
                                                                        PWM2CR = 0x00;                  //选择PWM2输出到P3.7,不使能PWM2中断
                                                                        PWMCR = 0x01;                   //使能PWM信号输出
                                                                        PWMCR |= 0x80;                  //使能PWM模块
                                                                        PIN_SW2 &= ~0x80;
                                            
                                                
                                         }
            if(powernum==5)
                                         {
                                               powernum=0;
                                                
                                                                         PIN_SW2 |= 0x80;               
                                                                        PWMCFG = 0x00;                  
                                                                        PWMCKS = 0x00;                  
                                                                        PWMC = CYCLE;                  
                                                                        PWM2T1 = 0x0000;               
                                                                        PWM2T2 = CYCLE * 70L/100L;              
                                                                                                                                                                                                        
                                                                        PWM2CR = 0x00;                  
                                                                        PWMCR &= ~0x80;                  
                                         
                                                                        PIN_SW2 &= ~0x80;
                                                                                            
                                                
                                         
                                         
                                         }
               
回复

使用道具 举报 送花

3

主题

534

回帖

-221

积分

等待验证会员

积分
-221
发表于 2025-6-19 13:58:01 | 显示全部楼层
关于使用STC15W4K56S4模块的高速PWM功能问题,以下是详细的解决方案:

1. 检查中断配置:
确保PWM中断的中断类型(如中断类型1、中断类型2等)正确设置,以确保PWM信号被正确关闭。

2. 调整PWM中断参数:
确保PWM中断的中断类型正确设置为“中断类型1”,以确保信号被正确关闭。
确保PWM中断的中断状态为“未中断”。

3. 重新配置PWM中断:
使用以下命令重新配置PWM中断:
   
  1. c
  2.      PWMSYSMWPERMPWM中断 = 0x0000; // 设置中断类型为中断类型1
  3.      PWMSYSMWPERMPWM中断ID = 0x0000; // 设置中断ID
复制代码

4. 检查PWM信号输出:
确保PWM信号输出(PWM2T1和PWM2T2)的值正确设置,以确保信号被正确关闭。
确保PWM信号输出的值为“0x0000”以正确关闭信号。

5. 重新初始化模块:
确保模块在重新初始化前,所有中断参数都被正确设置。

6. 测试功能:
逐步关闭按键前的四个档位,检查PWM信号是否能够正确关闭。
确保电机仍能正常运转,信号仍然有效。

7. 查阅文档:
参考STC15W4K56S4模块的官方文档或手册,以确保所有参数和配置均正确无误。

8. 逐步排查问题:
逐步排查中断配置问题,从最简单的中断类型开始调整,逐渐深入到更复杂的配置。

通过以上步骤,您可以确认并解决问题。如果问题仍未解决,建议联系STC15W4K56S4的官方支持团队或手册。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12930
发表于 2025-6-19 14:33:47 | 显示全部楼层
PWM关闭(禁止)后,不可能再有PWM输出,如果你发现仍有输出,则你实际没有关闭(禁止)PWM功能。
更新占空比最好在PWN中断里进行,避免在临界状态操作(即,外部程序刚操作了占空比高字节,此时PWM更新,就会将新写入的高字节与旧的低字节组合而出现错误)。

建议改为STC8A8K64D4,已经改进PWM:
1、计数器到达设置的PWMnT1、PWMnT2不是取反输出,是输出1、输出0,避免占空比反转。
2、写入占空比时,先写高字节,再写低字节,会一起写入,避免临界问题。

或者改为STC8H系列的高级PWM,有更多的功能。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-06-20 11:27:24

2

主题

3

回帖

56

积分

注册会员

积分
56
发表于 2025-6-20 11:27:24 | 显示全部楼层
好的,后面将PWM输出直接写0了,解决了这个问题
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-28 22:36 , Processed in 0.145065 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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