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, 统一安排【免费 + 包邮 送】服务人员