糖醋排骨 发表于 昨天 16:30

STC8H4K64TLCD,P26,P27引脚无法输出PWM互补信号



单片机型号:STC8H4K64TLCD
PWM互补输出测试
P20,P21测试正常
P26,P27 无PWM输出
//PWM 初始化

void PWM_init3(void)
{
        P_SW2 |= 0x80;//扩展功能寄存器使能

        P2M0 |= 0xc0; P2M1 &= ~0xc0; //P26,P27推挽输出

       
//        PWMA_ENO |= 0xC0;//P27和P26脚的PWM4N和PWM4P 使能
        PWMA_ENO = 0xC0;
       
       
//        PWMA_PS |= (1<<6);//PWA通道4在P26,P27
        PWMA_PS = 0x40;
       
        PWM1-> PSCRH = 0x00; //预分频寄存器
        PWM1-> PSCRL = 0x00;
        PWM1-> DTR = 0x2C; //死区时间配置
        PWM1-> CCMR1 = 0x68; //通道模式配置
        PWM1-> CCMR1 = 0x68; //通道模式配置
       
        PWM1-> ARRH = 0x0A;//高位   自动重装载寄存器,计数器 overflow 点
        PWM1-> ARRL = 0xCC;//低位   ARRH ARRL低电平维持时间
        PWM1-> CCR4H = 0x05; //高位   计数器比较值
        PWM1-> CCR4L = 0x34; //低位   CCR1HCCR1L高电平维持时间
       
        PWM1-> CCER1 = 0x55; //配置通道输出使能和极性
        PWM1-> BKR = 0x80; //主输出使能 相当于总开关
        PWM1-> CR1 = 0x01; //使能计数器
        EA = 1;        
}

//main.c

void main() //主函数
{
       
//        LED_Config();
        Timer0_Init();
        EA = 1;    //开总中断
        LED0 = 0;
        PWM_init3();

        while(1)
        {
                ;
        }               
}




糖醋排骨 发表于 昨天 16:31

// P20,P21
void PWM_init3(void)
{
        P_SW2 |= 0x80;
       
        P2M0 |= 0x03; P2M1 &= ~0x03;



        PWMA_ENO = 0x03; //=0000 0011 P11和P10脚的PWM1N和PWM1P 使能   //通道1使能
        PWMA_PS = 0x55;//PW4\PW3\PW2在P2脚PW1在P2脚 0101 0101
        /**********************************************************
        PWMx_duty = *100
        ***********************************************************/
        PWM1-> PSCRH = 0x00; //预分频寄存器
        PWM1-> PSCRL = 0x00;
        PWM1-> DTR = 0x2C; //死区时间配置
        PWM1-> CCMR1 = 0x68; //通道模式配置
        //TIM1-> CCMR2 = 0x68;
        //TIM1-> CCMR3 = 0x68;

//        TIM1-> CCMR4 = 0x68;
//        TIM1-> ARRH = 0x04;//高位   自动重装载寄存器,计数器 overflow 点
//        TIM1-> ARRL = 0x4C;//低位   ARRH ARRL低电平维持时间
//        TIM1-> CCR1H = 0x02; //高位   计数器比较值
//        TIM1-> CCR1L = 0x26; //低位   CCR1HCCR1L高电平维持时间
       
        //ARR 2764   CCRL 1332
        PWM1-> ARRH = 0x0A;//高位   自动重装载寄存器,计数器 overflow 点
        PWM1-> ARRL = 0xCC;//低位   ARRH ARRL低电平维持时间
        PWM1-> CCR1H = 0x05; //高位   计数器比较值
        PWM1-> CCR1L = 0x34; //低位   CCR1HCCR1L高电平维持时间
       
       

        PWM1-> CCER1 = 0x55; //配置通道输出使能和极性
//        TIM1-> CCER2 = 0x55; //配置通道输出使能和极性
        PWM1-> BKR = 0x80; //主输出使能 相当于总开关
//        TIM1-> IER = 0x02; //使能中断
   PWM1-> CR1 = 0x1; //禁止计数器
        EA = 1;


}

神农鼎 发表于 昨天 20:10









页: [1]
查看完整版本: STC8H4K64TLCD,P26,P27引脚无法输出PWM互补信号