lgy19710610 发表于 2024-12-2 11:52:52

我想问一下,同时将PWMA和PWMB可以设置成不同频率可以吗

清风予我 发表于 2024-12-2 13:19:51

tryhfd 发表于 2024-11-30 20:36
这个板子的原理图没有找到,请提供一下好吗


lgy19710610 发表于 2025-2-7 11:18:10

PWMA中的两路互补波形如何实现不同时间的启停,同一时间启停可以实现,不同时启停怎么是实现?我是初学者,希望高手能予指导,谢谢!

王昱顺 发表于 2025-2-7 14:22:36

lgy19710610 发表于 2025-2-7 11:18
PWMA中的两路互补波形如何实现不同时间的启停,同一时间启停可以实现,不同时启停怎么是实现?我是初学者, ...

启动后,不打开PWMx_ENO对应的位即可,等待所需要的时间后再打开就可以做到不同时间的启停了。实际内部是运行的,只是不对外输出。
如果你想问的是如何将两个波形错开一个相位,这个需要使用pwm移相功能,具体请参见技术手册的pwm移项部分

lgy19710610 发表于 2025-2-8 23:18:54

收到,非常感谢

lgy19710610 发表于 2025-2-19 17:14:36

大家帮帮忙,有这么一个问题想和大家探讨一下
if(PWM_DUTY<=duty1)(PWM_DUTY+=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
                PWMA_CCR1L =PWM_DUTY); //else                                //CC1通道占空比更新
    if(PWM_DUTY>=duty1)(PWM_DUTY-=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
        PWMA_CCR1L = PWM_DUTY);         当PWM_DUTY+=1时波形正常,当为4时就不正常了,是什么原因呢

lgy19710610 发表于 2025-2-19 18:26:16

这是单相逆变波形,占空比按百分比增加也是这样,附上源码#include <STC32G.H>
#include <config.h>
#include <intrins.H>

#define FOSC           24000000UL           //24MHz,时钟周期0.5us
#define uchar unsigned char
#define uintunsigned int

#define PWM_PSC        (12-1)                         //12分频
#define PWM_PERIOD         40000      //周期2ms50Hz

#define PWM_DUTY    duty          //占空2%
#define PWM_DTime                48                          //死区10us 1~10us 12~120

u16 t1=2;
u16 duty;
u16 duty1=19990;
//bit updateduty;

void Timer2_Init(void);
//void delayms(u16 ms);
void SYS_Init();
void PWM_Init();
//void Update_duty();                                                //更新占空比函数
//void Timer0_Init();

void main()
{
SYS_Init();
        PWM_Init();
        Timer2_Init();       
        AUXR |= 0x10;                        //定时器2开始计时
        EA=1;
        //Update_duty();
        while(1);
          {       
       
                       
                }       
}



void SYS_Init()
{
        WTST=0;
       
        EAXFR=1;
        CKCON=0;
        duty=200;
       
        P0M1 = 0x00;P0M0 = 0x00;                //设置P0口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P1M1 = 0x00;P1M0 = 0x00;                //设置P1口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P2M1 = 0x00;P2M0 = 0x0F;                //设置P2口为推挽输出模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
        P3M1 = 0x00;P3M0 = 0x00;                //设置P3口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
}       
       
void PWM_Init()
{
PWMA_PSCRH=(char)(PWM_PSC>>8);
        PWMA_PSCRL=(char)(PWM_PSC);       
       
        PWMA_CCER1=0x00;
       
        PWMA_CCMR1=0x60;
PWMA_CCMR2=0x30;
       
        PWMA_CCER1=0x55;
               
        PWMA_ARRH=(char)(PWM_PERIOD>>8),
        PWMA_ARRL=(char)(PWM_PERIOD);
       
        PWMA_ENO =0x0f;
        PWMA_PS=0x05;
        PWMA_DTR = PWM_DTime;                                                                // 插入死区时间
       
        PWMA_CCR1H=(char)(PWM_DUTY>>8);
        PWMA_CCR1L=(char)(PWM_DUTY);
        PWMA_CCR2H=(char)(PWM_PERIOD/2>>8);
        PWMA_CCR2L=(char)(PWM_PERIOD/2);
       
        PWMA_IER =0x05;
        PWMA_BKR=0x80;
        PWMA_CR1=0x01;
}

void PWMA_ISR() interrupt 26
{
        if(PWMA_SR1&0x01)
        {
   PWMA_CCR2H=(char)(PWM_PERIOD/2>>8);//设置占空比时间
               PWMA_CCR2L=(char)(PWM_PERIOD/2);
   
   PWMA_SR1&=~0x01;
        }
else if(PWMA_SR1&0x04)
{       
   PWMA_CCR2H=(char)((PWM_PERIOD/2+PWM_DUTY)>>8);
           PWMA_CCR2L=(char)(PWM_PERIOD/2+PWM_DUTY);
   PWMA_SR1&=~0x04;
        }       
else
        {
   PWMA_SR1=0;
}
}               

void Timer2_Init(void)                                //1秒@24.000MHz
{
        TM2PS = 0x00;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0xFB;                        //定时器时钟12T模式
        T2L = 0xB1;                                //设置定时初始值
        T2H = 0x00;                                //设置定时初始值
       
        IE2 |= 0x04;                        //使能定时器2中断
       
}

/*短路保护程序*/
/*void INT0_Isr(void) interrupt 0
{
        in0:TR1=TR0=0;
        IE&=0x85;
        P14=0;
        P03=0;
        P35=0;
        goto in0;
}

void INT1_Isr(void) interrupt 2
{
        in1:TR1=TR0=0;
        IE&=0x85;
        P14=0;
        P04=0;
        P35=0;
        goto in1;
}
*/
void Timer2_Isr(void) interrupt 12
{
       
        /*if(duty1>99)duty1=99;if(duty1<2)duty1=2;
        if(t1<duty1)(t1++,duty=20*t1,PWMA_CCR1H = (u8)(duty >> 8),
                PWMA_CCR1L = duty); //else                                //设置CC1通道占空比
if(t1>duty1)(t1--,duty=20*t1,PWMA_CCR1H = (u8)(duty >> 8),
        PWMA_CCR1L = duty); */
       
       
    if(PWM_DUTY<=duty1)(PWM_DUTY+=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
                PWMA_CCR1L =PWM_DUTY); //else                                //设置CC1通道占空比
    if(PWM_DUTY>=duty1)(PWM_DUTY-=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
        PWMA_CCR1L = PWM_DUTY);        
       
}

/*void delayms(u16 ms)                        //简单延时函数,自适应主频,1毫秒*ms
{
        u16 i;
        do{
                        i = MAIN_Fosc/6000;
                        while(--i);
                }while(--ms);
}
*/

wf1378004 发表于 2025-6-1 21:52:50

布丁局长 怎么购买你的开发板?

清风予我 发表于 2025-6-4 14:43:20

【免费 + 包邮 送】 送/申样/采购 可上班时间加 如下您对应地区的客服 QQ或微信联系
加STC华南区客服司经理QQ: 2234917869 ;微信:18012226298要求 【免费+包邮】 送, 还免费教仿真
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592要求 【免费+包邮】 送, 还免费教仿真
加STC华南区客服佘经理QQ: 614777595;   微信:18106296591 要求 【免费+包邮】 送, 还免费教仿真
加STC华南区客服曹经理QQ: 1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ: 2593903262; 微信:18106296598要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服吴经理QQ: 1463035472; 微信:19952583954要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服杨经理QQ: 1638975601 ;微信:19952583876要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ; 微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服李经理QQ: 1017142298 ;微信:19952583534要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服曹经理QQ: 3897745450 ;微信:18012226281 要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服吴经理QQ: 1463035472 ;微信:19952583954 要求 【免费+包邮】 送, 还免费教仿真

工作时间:8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)
【免费 + 包邮 送】 送/申样/采购传统电话热线:0513-55012928,0513-89896509,0513-55012929
2025/4/15, 统一安排【免费 + 包邮 送】服务人员
页: 1 2 3 4 5 6 [7]
查看完整版本: 布丁橘长-STC32屠龙刀视频-代码分享&问题讨论帖