请教前辈,STC单片机芯片PWM硬件设置
本帖最后由 happy2058 于 2023-12-8 10:56 编辑芯片8H3K32S2系统24M 1T
//********************************************************PWMA 互补*****************************************
#define PWM_PSC (12-1) //12分频,0.5us
#define PWM_PERIOD 2 //周期1us
#define PWM_DUTY 1 //占空0.5us
void PWMA_Config() //
{
PWMA_PS =0x40; //P2.6P2.7 管脚
PWMA_PSCRH = (u16)(PWM_PSC >> 8);
PWMA_PSCRL = (u16)(PWM_PSC);
PWMA_CCER2 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
PWMA_CCMR4 = 0x60; // 设置 CC2 为 PWMA 输出模式,PWM模式1
PWMA_CCER2 = 0x50; // 使能 CC4P4n
PWMA_CCR4H = (u16)(PWM_DUTY >> 8);//设置占空比
PWMA_CCR4L = (u16)(PWM_DUTY);
PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
PWMA_ARRL = (u16)(PWM_PERIOD);
//PWMA_IER
//PWMA_DTR = 1;
PWMA_ENO = 0xc0; // 使能 PWM4p4n 端口输出
PWMA_BKR = 0x80; // 使能主输出
PWMA_CR1 = 0x01; // 启动PWM定时器
}
为什么周期变大了,不管我怎么设置,周期不等于PWMA_ARR
下图是12分频,PWMA_CCR 1usPWMA_ARR 5us 占空比0.2
下图是6分频,PWMA_CCR 1usPWMA_ARR 5us 占空比0.2
周期要比设置的ARR要大,大了接近一个正脉宽。是硬件清耗吗?产生事件消耗?我把其它功能已经全部关闭。只留了一下PWMA。
页:
[1]