consoleyou 发表于 3 天前

PWM输出初始化问题,为什么我将STC8H8K64U的PWM1映射到P2.0脚无法使用,映射到P1.0就

我需要同时启动PWM4和PWM1输出,为什么PWM4初始化配置P1.6脚正常输出,PWM1配置P2.0无法输出,将功能脚映射改为P1.0又行了,初始化代码如下:
void PWM_Init(void){

// 配置P1.6 PWM4P输出,P2.0 PWM1P/2输出
       
PWMA_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道,控制PWM1       
PWMA_CCER2 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道,控制PWM4
       
PWMA_CCMR1 = 0x60; //设置 PWM1P 模式1 输出               
PWMA_CCMR4 = 0x60; //设置 PWM4P 模式1 输出
       
PWMA_CCER1 = 0x01; // 仅使能CC1E(PWM1P输出)
PWMA_CCER2 = 0x10; // 仅使能CC4E(PWM4P输出)
       
PWMA_CCMR1 |= 0x08; //输出比较预装载使能(CCxE为1才可写)       
PWMA_CCMR4 |= 0x08; //输出比较预装载使能(CCxE为1才可写)

PWMA_ARR = PWM_ARR_VALUE;            // 设置PWM周期(自动重装值)       
       
PWMA_CCR1 = ccr1_value;       //设置占空比时间,捕获比较寄存器1                       
PWMA_CCR4 = ccr4_value;       //设置占空比时间,捕获比较寄存器4       

PWMA_PS &= 0x3d; //通道使能位PWM4 映射为P1.6,P1.7,使能PWM1 映射为p2.0,p2.1
PWMA_ENO = 0x41; //输出使能PWM4P 即P1.6,使能PWM1P/2 即P2.0

PWMA_BKR = 0x80; //使能主输出
PWMA_CR1 |= 0x01; //开始计时               
}

乘风飞扬 发表于 3 天前

PWMA_PS &= 0x3d;    //这条指令后面再加一条
PWMA_PS |= 0x01;    //这样才能将PWM1映射到P2.0,P2.1

consoleyou 发表于 3 天前

乘风飞扬 发表于 2026-4-1 11:46
PWMA_PS &= 0x3d;    //这条指令后面再加一条
PWMA_PS |= 0x01;    //这样才能将PWM1映射到P2.0,P2.1 ...

谢谢,晚上回去试试
页: [1]
查看完整版本: PWM输出初始化问题,为什么我将STC8H8K64U的PWM1映射到P2.0脚无法使用,映射到P1.0就